我想在客户端和服务器端都使用 ES6。当然,我可以从终端启动我的 NodeJS 服务器babel-node src/app.js
,但它无法调试。
另一方面,Webstorm 9 声称它支持 ES6,但是当我尝试启动默认节点配置时,它会抱怨该a => a + 1
功能。
问题:如何在 Webstorm 9 中启动 NodeJS + ES6 应用程序?
PS 我使用 Node 0.12.* 版本 PS 我也试过这个,但它也不适合我
我想在客户端和服务器端都使用 ES6。当然,我可以从终端启动我的 NodeJS 服务器babel-node src/app.js
,但它无法调试。
另一方面,Webstorm 9 声称它支持 ES6,但是当我尝试启动默认节点配置时,它会抱怨该a => a + 1
功能。
问题:如何在 Webstorm 9 中启动 NodeJS + ES6 应用程序?
PS 我使用 Node 0.12.* 版本 PS 我也试过这个,但它也不适合我
我终于在 WebStorm 中使用 polyfill 调试了转译代码,WebStorm 与 Babel 的协同工作令人印象深刻。
按照说明在 WebStorm 中配置 FileWatcher 非常容易,它会自动转换您的 es6 代码: http ://babeljs.io/docs/setup/#webstorm
让我绊倒的步骤是让节点找到 polyfill 文件,所以我可以使用 es6 迭代器和生成器。Babel 网站说要在全球范围内安装 Babel 和 polyfill:
npm install -g babel-es6-polyfill
但是当我在我的节点程序中添加时:
require("babel-es6-polyfill");
Node 抛出了一个关于找不到库的异常。然后我将要求路径更改为确切的完整路径:
require("/usr/local/lib/node_modules/babel-es6-polyfill/polyfill.js");
现在我可以使用调试器来单步调试转译的代码了!
你可以使用下面的 gulp babel 任务将你的 es6 文件编译成 es5。生成的文件将保存在 dist 目录中。在原始 es6 文件中放置一个断点,例如。app.js 并为生成的文件启动调试会话,即。dist/app.js(因为 node 不能运行 es6 文件)。原始文件中的断点将被命中。
var gulp = require('gulp'),
sourcemaps = require('gulp-sourcemaps'),
babel = require('gulp-babel'),
path = require('path'),
gutil = require('gulp-util');
// Compile ES6 to ES5
gulp.task("babel", function () {
return gulp.src('**/*.js')
.pipe(sourcemaps.init())
.pipe(babel())
.on('error', gutil.log)
.pipe(sourcemaps.write('.', {
includeContent: false,
sourceRoot: function(file) {
return path.relative(file.path, __dirname);
}
}))
.pipe(gulp.dest('dist'));
});
是的你可以。请点击此链接,http://blog.jetbrains.com/webstorm/2015/05/ecmascript-6-in-webstorm-transpiling/。我的看法是完整的 ES6 调试支持应该是无缝的,但在 Webstorm 中还没有。我相信它会好起来的。该博客提供了一个可行的解决方案。也就是说,我宁愿在 node-inspector 中调试……和 Chrome DevTools for React。