节点在使用 async/await 语法时抛出错误。但它适用于导入/导出语法

nar*_*loa 8 node.js babeljs

nodemon 在使用 async/await 语法时抛出错误:

**/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js:17
export default function _asyncToGenerator(fn) {
^^^^^^
SyntaxError: Unexpected token export
Run Code Online (Sandbox Code Playgroud)

但它适用于导入/导出语法。

包.json

{
  "scripts": {
    "dev": "nodemon --exec babel-node server/index.js",
  }
  "dependencies": {
    "@babel/polyfill": "^7.2.5",
  },
  "devDependencies": {
    "@babel/cli": "^7.2.3",
    "@babel/core": "^7.2.2",
    "@babel/node": "^7.2.2",
    "@babel/preset-env": "^7.2.3",
  }
}
Run Code Online (Sandbox Code Playgroud)

.babelrc

{
  "presets": [
    "@babel/preset-env"
  ]
}
Run Code Online (Sandbox Code Playgroud)

asyncToGenerator.js

function asyncGeneratorStep(...) { ... }
export default function _asyncToGenerator(fn) {
  return function () {
    var self = this,
        args = arguments;
    return new Promise(function (resolve, reject) {
      var gen = fn.apply(self, args);

      function _next(value) {
        asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
      }

      function _throw(err) {
        asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
      }

      _next(undefined);
    });
  };
}
Run Code Online (Sandbox Code Playgroud)

但我认为它可能会出错,因为我的 babel 设置。

顺便说一句,当我使用 typeof 时,它会抛出相同的错误

**/node_modules/@babel/runtime/helpers/esm/typeof.js:3
export default function _typeof(obj) {
^^^^^^
SyntaxError: Unexpected token export
Run Code Online (Sandbox Code Playgroud)

2020 年 6 月 12 日更新:

结构体:

src (vue app)
server (express app)
  |---- src
  |---- babel.config.js
  |---- index.js
package.json
babel.config.js
Run Code Online (Sandbox Code Playgroud)

在这个项目中,我有两个 babel 配置,一个用于 vue 的应用程序,另一个用于 express。我想要的是在项目的根路径上运行这些应用程序。

一开始,我关于运行 express 的脚本是

nodemon --exec babel-node server/index.js
Run Code Online (Sandbox Code Playgroud)

它可以运行 express,但它得到了错误的 babel 配置(project/babel.config.js)

而解决方案只是指出您要使用的 babel 配置的具体路径(project/server/babel.config.js)。所以运行快递的正确脚本是

nodemon --exec babel-node --config-file ./server/babel.config.js server/index.js",
Run Code Online (Sandbox Code Playgroud)

spe*_*ico 0

回答你的评论

nodemon 不知道 babelrc (也不应该)。并且 babel (AFAIK) 不允许您选择要使用的 babelrc 文件。我认为你应该合并 babelrc 文件并在运行 babel-node 时设置 env 标志。像这样:babeljs.io/docs/en/6.26.3/babelrc#env-option

另一种选择是制作一个脚本,在每次重新加载应用程序时重命名 babelrc 文件,或者类似的东西(我不明白为什么你需要 2 个 .babelrc 文件)