javascript - Babel CLI 引用错误 : regeneratorRuntime is not defined

标签 javascript node.js ecmascript-6 async-await babeljs

这些是我在 package.json 中的依赖项:

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

我可以用“babel server -d transpiled”编译得很好(我把所有东西都放在服务器文件夹而不是 src 中)。

当我尝试使用“node transpiled/index.js”运行转译后的代码时出现问题。我明白了

ReferenceError: regeneratorRuntime 未定义

我做了一些搜索,似乎问题是我在使用 await/async 时没有 babel-polyfill,但实际上我有。

这是我的 index.js 文件

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

这也是我的 .babelrc 文件

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

究竟是怎么回事,为什么我会收到此错误?我已经有了 babel-polyfill,所以这不应该发生。

最佳答案

我今天遇到了同样的问题。根据这个issue ,函数声明被提升,它们在转译代码中的导入之前结束。

要解决此问题,您可以更改应用程序的入口点,以便第一个文件可以导入 polyfill,然后导入应用程序的其余部分。像这样:

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

另一种解决方案是将您的异步函数声明转换为变量样式,因此您可以使用此 const myFunction = async () => {} 而不是此 async myFunction {}/。这样,由于该函数现在是一个变量,它不会在 require("babel-polyfill") 之前被提升。

关于javascript - Babel CLI 引用错误 : regeneratorRuntime is not defined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45576855/

相关文章:

javascript - 在 ES6 中使用默认值和扩展语法

javascript - 在同一文件中使用 AJAX 调用用户定义的 PHP 函数

javascript - 如何在angularjs中获取复选框值和单选值

node.js - TypeScript 编译 node-postgres 的问题

javascript - `this` 在默认参数下如何工作?

javascript - React,单击时获取列表索引

javascript - 以编程方式将 3-D 形状添加到必应 map (虚拟地球)

javascript - Web Audio API 分析器节点 getByteFrequencyData 返回空白数组

mysql - REST API、OAuth2 和身份验证错误

javascript - 与 Node 成 Angular