2017-08-08 169 views
2

這些都是我在的package.json依賴關係:巴貝爾CLI的ReferenceError:regeneratorRuntime沒有定義

"devDependencies": { 
    "babel-cli": "^6.24.1", 
    "babel-polyfill": "^6.23.0", 
    "babel-preset-env": "^1.6.0", 
    "babel-preset-stage-0": "^6.5.0", 
} 

我可以編譯(我把一切都在一個服務器文件夾,而不是「-d transpiled通天服務器」就好了SRC)。

當我嘗試運行帶有「節點transpiled/index.js」的傳輸代碼時,會發生該問題。我得到

ReferenceError: regeneratorRuntime is not defined

我做了一些搜索,似乎這個問題是使用的await /異步的時候,我沒有通天,填充工具,但我實際上做。

這裏是我的index.js文件

require('babel-polyfill'); 
require('./server'); 

這裏也是我的.babelrc文件

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

究竟是怎麼回事什麼,爲什麼我會收到這個錯誤?我已經有了babel-polyfill,所以這不應該發生。

+0

我會建議安裝babel-plugin-transform-regenerator npm軟件包。並且還包含它讓regeneratorRuntime = require(「regenerator-runtime」); –

+0

我嘗試安裝它,需要它,甚至將它作爲插件添加到.babelrc,但它不起作用。 – anonpd762

+0

[Babel 6 regeneratorRuntime未定義]的可能重複(https://stackoverflow.com/questions/33527653/babel-6-regeneratorruntime-is-not-defined) –

回答

2

今天我遇到了同樣的問題。根據這個issue,函數聲明被提升,並且它們在傳輸代碼中的導入之前結束。

要解決此問題,您可以更改應用程序的入口點,以便第一個文件可以導入polyfill,然後導入應用程序的其餘部分。事情是這樣的:

import 'babel-polyfill'; 
import './app'; 

另一個解決方案是你的異步函數聲明轉化爲可變式的,所以不是這個async myFunction {}您可以使用此const myFunction = async() => {}。這樣,由於該功能現在是一個變量,它不會在require("babel-polyfill")之前懸掛。

+1

隱藏你的功能,隱藏你的妻子因爲你們都宣佈bois吊起來 –