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
!