debuggingNodeJS + ES6应用程序(Webstorm)

我想在客户端和服务器端都使用ES6。 当然,我可以从像babel-node src/app.js这样的terminal启动我的NodeJS服务器,但是这使得无法进行debugging。

另一方面,Webstorm 9声称它支持ES6,但是当我尝试启动一个默认的Nodeconfiguration时,它抱怨a => a + 1函数。

问:如何从Webstorm 9内部启动NodeJS + ES6应用程序?

PS我使用节点0.12。*版本PS我也试过这个,但它也不适合我

我最终debugging了在WebStorm中使用polyfills的编译代码,并且WebStorm和Babel的一致性真的让人印象深刻。

在WebStorm中configurationFileWatcher的方法非常简单,它可以自动转换es6代码: http ://babeljs.io/docs/setup/#webstorm

绊倒我的步骤是让节点findpolyfill文件,所以我可以使用es6迭代器和生成器。 巴别尔网站说,要在全球范围内安装Babel和polyfill:

 npm install -g babel-es6-polyfill 

但是当我在我的节点程序中添加:

 require("babel-es6-polyfill"); 

节点抛出一个关于找不到库的例外。 然后我将requirepath更改为完全path:

 require("/usr/local/lib/node_modules/babel-es6-polyfill/polyfill.js"); 

现在我可以使用debugging器来查看传输的代码了!

您可以使用下面的gulp babel任务将es6文件编译为es5。 生成的文件将被保存在dist目录中。 把一个断点放在原来的es6文件中,例如。 app.js并为生成的文件启动一个debugging会话。 dist / app.js(因为节点不能运行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/ 。 我认为完整的ES6debugging支持应该是无缝的,但在Webstorm中尚不完全。 我相信它会变得更好。 博客提供了一个可行的解决scheme。 也就是说,我宁愿在节点检查器中进行debugging…以及用于React的Chrome DevTools。

最后我在这里find了答案。 我做了npm install babel并添加require('babel/register')在我的主节点文件( app.js )的开始。

现在我真的可以从Webstorm启动/debugging使用ES6编写的Node应用程序。 但是这个debugging是非常奇怪的 – 看起来像以前工作的代码不知道。 Intellij debuger说我所有的variables都是未定义的。 还有一篇关于另一个可能的问题的文章 。

例: 在这里输入图像描述

什么是超级花式的内部循环for (var i = 1; i < trs.length; i++) { i认为variablesundefined