Babel 6命令行界面:出现意外的“token export”错误?

11

我正在尝试使用 babel-node 通过 Babel 的 CLI 运行代码,但是一直遇到 Unexpected token export 错误。我知道 Babel 6 需要使用插件,并且需要通过 .babelrc 设置插件,但似乎并没有正常工作。

那么这里是我的问题:

对于那些好奇我要导出什么的人,这里是类:

'use strict';

class Factorial {
  static solve (num) {
    if(num === 0) return 1;
    else return num * Factorial.solve(num - 1);
  }
}

console.log(Factorial.solve(5))

export default Factorial;

4
顺带一提,如果一个类中仅包含静态方法,则不应使用该类。可以使用对象或在这种情况下只需一个简单的函数即可。 - Felix Kling
@FelixKling 感谢您的提示,我只是习惯于使用类,因为我来自C++/C#/Java背景 ;) - iwatakeshi
2个回答

16

开始的最简单方式是使用一个预设

首先,让我们安装我们的依赖项:

$ npm install --save-dev babel-cli babel-preset-es2015

然后在您的package.json中添加一个build脚本来运行Babel:(这很重要,因为它将使用您本地安装的babel-cli版本而不是全局安装的版本)

"build": "babel input.js"

你的package.json应该长这样:

{
  "name": "my-module",
  "devDependencies": {
    "babel-cli": "^6.x.x",
    "babel-preset-es2015": "^6.x.x"
  },
  "scripts": {
    "build": "babel input.js -o compiled.js"
  }
}

最后,您需要这样更新本地的.babelrc

{
  "presets": ["es2015"]
}

然后您运行npm run build,就可以开始了。

另外,Babel 6的CLI是否有全局.babelrc选项?如果每个项目都需要安装插件,这似乎很繁琐...

这是一个坏主意,因为这意味着您不能更新它,而不更新您所有项目的代码。拥有本地版本意味着此潜在错误不太可能发生。


谢谢!我意识到预设存在,并且确实使用了它,但似乎import关键字无效?你对这个问题有什么了解吗? - iwatakeshi
你的 Babel 版本可能存在问题。早期版本可能会出现一些问题,尝试更新一下,如果还是不行,可以到 Slack 频道寻求支持。https://slack.babeljs.io/ - James Kyle

3

我也遇到了相同的错误,但我的webpack/babel配置看起来是正确的。通过尝试和错误,我将 export myFunction 替换为 export default myFunction,然后错误被解决了。


后来,我意识到正确的导出方式是 export {myFunction}。我实现了它,一切都正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接