巴贝尔似乎没有工作

时间:2016-10-07 12:07:32

标签: javascript node.js ecmascript-6 webstorm babeljs

我有一个使用WebStorm 2016.2.2,Node.js 6.6.0和TypeScript 1.8构建的项目。

由于某些原因,在此处指定:ES6 import and export are not supported in Node.js,我需要使用Babel。

我已经安装了Babel和babel-preset-es2015并且我添加了一个文件观察器,但是我仍然得到一个"意外的令牌导入"错误。看起来巴贝尔不起作用。

1)我是否需要采取额外措施才能将我的js文件转换为ES5?

2)我应该在什么版本的ES中设置" JavaScript语言版本"在WebStorm设置中?

3)Babel是否应该像TypeScript编译器那样使用输出生成另一个文件?

任何帮助都将深表感谢!

3 个答案:

答案 0 :(得分:2)

以下是适用于我的Babel文件观察器设置:

Arguments: $FilePathRelativeToProjectRoot$ --out-dir $ProjectFileDir$/dist --source-maps  --presets es2015
Working directory: $ProjectFileDir$
Output Paths to Refresh: $ProjectFileDir$/dist/$FileDirRelativeToProjectRoot$/$FileNameWithoutExtension$.js:$ProjectFileDir$/dist/$FileDirRelativeToProjectRoot$/$FileNameWithoutExtension$.js.map

它将文件编译为单独的目录,保留原始文件名,以便require()起作用;另外,WebStorm知道生成的文件,因为编译完成后文件系统会正确刷新

答案 1 :(得分:1)

1)在项目的根目录中创建一个名为.babelrc的文件,其中包含以下内容:

{
  "presets": ["es2015"]
}

仅安装es6预设是不够的,你必须告诉babel使用该预设。供参考:https://babeljs.io/docs/plugins/preset-es2015/

2)尝试设置ECMAScript6

答案 2 :(得分:1)

不要将babel-preset-es2015用于Node.js 6 。这会将您的资源转换为ES5,而您本身已经对ES6提供97%的支持,从而导致严重的性能损失。仅仅添加它也不会启用模块转换。

使用babel-preset-node6预设或只添加transform-es2015-modules-commonjs插件。