Babel.js 当使用encrypt/await语法时节点抛出错误.但它与导入/导出语法配合良好

5t7ly7z5  于 12个月前  发布在  Babel
关注(0)|答案(2)|浏览(135)

nodemon抛出错误时,使用nodemon c/await语法:

**/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


更新6/12,2020:
结构:

src (vue app)
server (express app)
  |---- src
  |---- babel.config.js
  |---- index.js
package.json
babel.config.js


在这个项目中,我有两个babel配置,一个是vue的app,另一个是express的,我想要的是在项目的根路径上运行这些app。
一开始,我关于运行Express的脚本是

nodemon --exec babel-node server/index.js


它可以运行express,但它得到了错误的babel配置(project/babel.js.js)
解决方案是指出你想使用的babel配置的具体路径(project/server/babel.js)。

nodemon --exec babel-node --config-file ./server/babel.config.js server/index.js",

r9f1avp5

r9f1avp51#

回答your comment
nodemon不知道babelrc(也不应该知道)。而且babel(AFAIK)不允许你选择你想要使用的babelrc文件。我认为你应该合并你的babelrc文件,并在运行babel-node时设置env标志。像这样:babeljs.io/docs/en/6.26.3/babelrc#env-option
另一个选择是编写一个脚本,在每次重新加载应用程序时重命名babelrc文件,或者类似的东西(我不明白为什么你需要2个.babelrc文件)

vd2z7a6w

vd2z7a6w2#

我读到项目中有更多的.babelrc文件。
从babel docs看来,.babelrc需要在子包的同一个目录中。

相关问题