亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

未定義Babel 6再生器運行時

未定義Babel 6再生器運行時

慕婉清6462132 2019-07-05 09:44:58
未定義Babel 6再生器運行時我正在嘗試使用異步,在Babel 6上從頭到尾等待,但是再生器運行時沒有定義。.babelrc文件{     "presets": [ "es2015", "stage-0" ]}Package.json文件"devDependencies": {     "babel-core": "^6.0.20",     "babel-preset-es2015": "^6.0.15",     "babel-preset-stage-0": "^6.0.15"}.js文件"use strict";async function foo() {   await bar();}function bar() { }exports.default = foo;正常使用它,而不需要異步/等待,工作正常。知道我做錯什么了嗎?
查看完整描述

3 回答

?
慕娘9325324

TA貢獻1783條經驗 獲得超4個贊

babel-polyfill是必需的。您還必須安裝它才能獲得異步/等待工作。

npm i -D babel-core babel-polyfill babel-preset-es2015 babel-preset-stage-0 babel-loader

Package.json

"devDependencies": {
  "babel-core": "^6.0.20",
  "babel-polyfill": "^6.0.16",
  "babel-preset-es2015": "^6.0.15",
  "babel-preset-stage-0": "^6.0.15"}

.babelrc

{
  "presets": [ "es2015", "stage-0" ]}

.js具有異步/等待(示例代碼)

"use strict";export default async function foo() {
  var s = await bar();
  console.log(s);}function bar() {
  return "bar";}

在啟動文件中

require("babel-core/register");require("babel-polyfill");

如果你用網絡包您需要將其作為entry數組在您的webpack配置文件中(通常是webpack.config.js),如Per@Ceman評論所示:

module.exports = {
  entry: ['babel-polyfill', './test.js'],

  output: {
    filename: 'bundle.js'       
  },

  module: {
    loaders: [
      { test: /\.jsx?$/, loader: 'babel', }
    ]
  }};

如果您想使用Babel運行測試,那么請使用:

mocha --compilers js:babel-core/register --require babel-polyfill


查看完整回答
反對 回復 2019-07-05
?
撒科打諢

TA貢獻1934條經驗 獲得超2個贊

除了填充物,我用Babel-插件-轉換-運行時..該插件被描述為:

外部化對幫助者和構建器的引用,自動填充代碼而不污染全局。這到底是什么意思?基本上,您可以使用內置的,如承諾,集,符號等,以及使用所有的巴貝爾功能,需要一個完整的填充,沒有全球性的污染,使它非常適合圖書館。

它還包括對異步/等待的支持,以及ES 6的其他內置。

$ npm install --save-dev babel-plugin-transform-runtime

在……里面.babelrc,添加運行時插件。

{
  "plugins": [
    ["transform-runtime", {
      "regenerator": true
    }]
  ]}


查看完整回答
反對 回復 2019-07-05
?
智慧大石

TA貢獻1946條經驗 獲得超3個贊

如果你把目標設定為Chrome,它就能工作。但它可能不適用于其他目標,請參閱:https:/github.com/Babel/Babel-預設-env/Isks/112

所以這個答案是很適合最初的問題。我會把它保存在這里作為參考babel-preset-env.

一個簡單的解決方案是添加import 'babel-polyfill'在你的代碼開始的時候。

如果您使用webpack,一個快速的解決方案是添加babel-polyfill如下所示:

entry: {
    index: ['babel-polyfill', './index.js']}

我相信我找到了最新的最佳做法。

檢查此項目:https://github.com/babel/babel-preset-env

yarn add --dev babel-preset-env

使用以下方式作為您的Babel配置:

{
  "presets": [
    ["env", {
      "targets": {
        "browsers": ["last 2 Chrome versions"]
      }
    }]
  ]}

那么你的應用程序應該可以在最后兩個版本的Chrome瀏覽器中使用。

你也可以設置節點作為目標或微調瀏覽器列表https://github.com/ai/browserslist

告訴我什么,別告訴我怎么做。

我真的很喜歡babel-preset-env哲學:告訴我你想支持哪個環境,不要告訴我如何支持它們。這是聲明式編程的美妙之處。

我測試過async await他們確實有工作。我不知道它們是怎么工作的我真的不想知道。我想把我的時間花在我自己的代碼和業務邏輯上。感謝babel-preset-env它把我從巴貝爾配置地獄中解放出來。


查看完整回答
反對 回復 2019-07-05
  • 3 回答
  • 0 關注
  • 526 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號