Ecmascript 6 ES6生成器函数导致错误:未捕获引用错误:未定义regeneratorRuntime
如果我把一个生成器函数Ecmascript 6 ES6生成器函数导致错误:未捕获引用错误:未定义regeneratorRuntime,ecmascript-6,elixir,phoenix-framework,Ecmascript 6,Elixir,Phoenix Framework,如果我把一个生成器函数 function* someWords() { yield "hello"; yield "world"; } for (var word of someWords()) { alert(word); } 在app.js中,代码生成一个未捕获的引用错误 如果我在app.html.eex中的脚本标记中运行相同的代码,则运行正常。app.html.eex中的代码将不会通过babel传递。如果您使用的浏览器支持生成器,那么它们将正常工作 由于您的app.js代码
function* someWords() {
yield "hello";
yield "world";
}
for (var word of someWords()) {
alert(word);
}
在app.js中,代码生成一个未捕获的引用错误
如果我在app.html.eex中的脚本标记中运行相同的代码,则运行正常。app.html.eex中的代码将不会通过babel传递。如果您使用的浏览器支持生成器,那么它们将正常工作 由于您的
app.js
代码是用babel传输的,因此您可能需要使用它才能使生成器工作
app.js
import "phoenix_html"
import "babel-polyfill"
function* someWords() {
yield "hello";
yield "world";
}
for (var word of someWords()) {
alert(word);
}
exports.config = {
files: {
javascripts: {
joinTo: "js/app.js"
},
stylesheets: {
joinTo: "css/app.css"
},
templates: {
joinTo: "js/app.js"
}
},
conventions: {
assets: /^(web\/static\/assets)/
},
paths: {
watched: [
"web/static",
"test/static"
],
public: "priv/static"
},
plugins: {
babel: {
// Do not use ES6 compiler in vendor code
ignore: [/web\/static\/vendor/]
}
},
modules: {
autoRequire: {
"js/app.js": ["web/static/js/app"]
}
},
npm: {
enabled: true,
whitelist: ["phoenix", "phoenix_html", "babel-polyfill"]
}
};
bunch_config.js
import "phoenix_html"
import "babel-polyfill"
function* someWords() {
yield "hello";
yield "world";
}
for (var word of someWords()) {
alert(word);
}
exports.config = {
files: {
javascripts: {
joinTo: "js/app.js"
},
stylesheets: {
joinTo: "css/app.css"
},
templates: {
joinTo: "js/app.js"
}
},
conventions: {
assets: /^(web\/static\/assets)/
},
paths: {
watched: [
"web/static",
"test/static"
],
public: "priv/static"
},
plugins: {
babel: {
// Do not use ES6 compiler in vendor code
ignore: [/web\/static\/vendor/]
}
},
modules: {
autoRequire: {
"js/app.js": ["web/static/js/app"]
}
},
npm: {
enabled: true,
whitelist: ["phoenix", "phoenix_html", "babel-polyfill"]
}
};
package.json
{
"repository": {},
"dependencies": {
"babel-brunch": "^6.0.0",
"babel-polyfill": "^6.3.14",
"brunch": "^2.1.3",
"clean-css-brunch": ">= 1.0 < 1.8",
"css-brunch": ">= 1.0 < 1.8",
"javascript-brunch": ">= 1.0 < 1.8",
"phoenix": "file:deps/phoenix",
"phoenix_html": "file:deps/phoenix_html",
"uglify-js-brunch": ">= 1.0 < 1.8"
}
}
{
“存储库”:{},
“依赖项”:{
“巴贝尔早午餐”:“^6.0.0”,
“巴别塔polyfill”:“^6.3.14”,
“早午餐”:“^2.1.3”,
“清洁css早午餐”:“>=1.0<1.8”,
“css早午餐”:“>=1.0<1.8”,
“javascript早午餐”:“>=1.0<1.8”,
“凤凰城”:“文件:deps/phoenix”,
“phoenix_html”:“文件:deps/phoenix_html”,
“uglify js早午餐”:“>=1.0<1.8”
}
}
我使用npm安装-S babel polyfill安装了polyfill,但现在我在web控制台中遇到一个新错误:未捕获引用错误:未定义全局。我把导入“babel polyfill”代码>在app.js中。您是否已将其添加到brunch config.js中的白名单中?我已尝试将路径“node_modules/babel polyfill”添加到路径中,但没有任何运气。我认为您只需要将“babel polyfill”添加到白名单中。我在npm部分添加了白名单:[“babel polyfill”]
,但仍然得到相同的错误。当我点击它时,控制台会把我带到js,上面写着“if(global._babelPolyfill){抛出新错误(“只允许一个babel polyfill实例”);}”