调试NodeJS + ES6应用程序(Webstorm)

VB_*_*VB_ 12 node.js webstorm ecmascript-6 babeljs

我想在客户端和服务器端都使用ES6.当然,我可以从终端启动我的NodeJS服务器babel-node src/app.js,但它无法调试.

另一方面,Webstorm 9声称它支持ES6,但是当我尝试启动默认的Node配置时,它会抱怨该a => a + 1功能.

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

PS我使用Node 0.12.*版本PS我也试过这个但它也不适用于我

Ste*_*rra 5

我终于使用在WebStorm中工作的polyfill来调试转换的代码,并且WebStorm与Babel的工作方式真的令人印象深刻.

按照WebStorm中配置FileWatcher的说明非常容易,它会自动转换您的es6代码:http://babeljs.io/docs/setup/#webstorm

绊倒我的步骤是让节点找到polyfill文件,所以我可以使用es6迭代器和生成器.Babel网站称全球安装Babel和polyfill:

npm install -g babel-es6-polyfill
Run Code Online (Sandbox Code Playgroud)

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

require("babel-es6-polyfill");
Run Code Online (Sandbox Code Playgroud)

Node抛出了一个关于找不到库的异常.然后我将require路径更改为完全完整路径:

require("/usr/local/lib/node_modules/babel-es6-polyfill/polyfill.js");
Run Code Online (Sandbox Code Playgroud)

现在我可以使用调试器逐步完成转换后的代码!


VB_*_*VB_ 0

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

现在我真的可以启动/调试 Webstorm 中用 ES6 编写的 Node 应用程序了。但这种调试是非常奇怪的——看起来以前可以工作的代码现在不起作用了。Intellij 调试器说我的所有变量都未定义。还有一篇关于另一个可能的问题的文章

例子:在此输入图像描述

for (var i = 1; i < trs.length; i++) {内部循环变量i考虑了什么undefined