我有一个使用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编译器那样使用输出生成另一个文件?
任何帮助都将深表感谢!
答案 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
插件。