12

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

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

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

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

4

4 回答 4

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

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

require("babel-es6-polyfill");

Node 抛出了一个关于找不到库的异常。然后我将要求路径更改为确切的完整路径:

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

现在我可以使用调试器来单步调试转译的代码了!

于 2015-06-13T16:45:55.810 回答
3

你可以使用下面的 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'));
});
于 2015-10-09T18:52:14.390 回答
1

是的你可以。请点击此链接,http://blog.jetbrains.com/webstorm/2015/05/ecmascript-6-in-webstorm-transpiling/。我的看法是完整的 ES6 调试支持应该是无缝的,但在 Webstorm 中还没有。我相信它会好起来的。该博客提供了一个可行的解决方案。也就是说,我宁愿在 node-inspector 中调试……和 Chrome DevTools for React。

于 2016-01-02T00:51:43.883 回答
0

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

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

例子:在此处输入图像描述

考虑到内部循环for (var i = 1; i < trs.length; i++) {变量,晚餐有什么特别之处!iundefined

于 2015-03-20T19:53:17.520 回答