使用async / await语法时,节点抛出错误。但是,与import / export语法一起使用时效果很好

时间:2018-12-27 08:05:33

标签: node.js babel

nodemon使用异步/等待语法时抛出错误:

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

但是它可以与导入/导出语法一起很好地工作。

package.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",
  }
}

.babelrc

{
  "presets": [
    "@babel/preset-env"
  ]
}

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);
    });
  };
}

但是我认为可能是因为我的通天塔设置而出错了。

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

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

2 个答案:

答案 0 :(得分:0)

回答your comment

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

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

答案 1 :(得分:0)

在一个不再可见的答案(可能是主持人删除)中,我读到项目中有更多.babelrc个文件。

babel docs中,看来.babelrc必须位于子软件包的同一目录中。我建议您阅读该文档,也许您会找到更适合您要求的解决方案。

很抱歉,您的回答含糊不清,但是由于您的问题中缺少详细信息(server/index.js文件内容,目录结构等),我无法做得更好。