Javascript 使用Nodemon在Node.js V6.2.0上安装Babel V6.x ES7 Async/Await

Javascript 使用Nodemon在Node.js V6.2.0上安装Babel V6.x ES7 Async/Await,javascript,node.js,babeljs,Javascript,Node.js,Babeljs,伙计,这是一个痛苦的设置!我已按照此处的安装说明单击nodemon框: 根目录中的.babelrc: { "presets": ["es2015"], "plugins": ["transform-async-to-generator"] } package.json(如图所示,我安装了更多babel工具): test.js: (async function () { // <-- error occues here const value = await 123;

伙计,这是一个痛苦的设置!我已按照此处的安装说明单击nodemon框:

根目录中的
.babelrc

{
  "presets": ["es2015"],
  "plugins": ["transform-async-to-generator"]
}
package.json
(如图所示,我安装了更多babel工具):

test.js

(async function () { // <-- error occues here
    const value = await 123;
    console.log(value);
})().then(() => {
    console.log('Done');
});

我还尝试切换到节点v4.4.7,并将npm升级到3.10.6。仍然是相同的错误。

异步/等待在babeljs中由插件
transform Async to generator
处理,该插件包含在
stage-3
预设中。默认情况下,它不包括在
es2015
预设中,因此您必须明确添加插件本身或
stage-3
预设。要在命令行上执行此操作,请在
package.json中更改此行:

"babel-node": "babel-node --presets=es2015 --ignore='foo|bar|baz'",
全文如下:

"babel-node": "babel-node --presets=es2015,stage-3 --ignore='foo|bar|baz'",
添加
stage-3
预设。也可以这样实现:

"babel-node": "babel-node --presets=es2015 --plugins=transform-async-to-generator --ignore='foo|bar|baz'",
但是,通常建议使用
.babelrc
配置文件,该文件可以简单到:

{
  "presets": ["es2015", "stage-3"]
}

然后,
package.json
中的行可以是:

"babel-node": "babel-node --ignore='foo|bar|baz'",

(评论上下文的原始答案)

您需要添加:

"plugins": ["transform-async-to-generator"]
对于您的
.babelrc
,因为我不相信任何标准预设中都包含async/await(因为它可以以多种方式实现)

1)删除所有babel模块(删除所有内容,这是我发现的一个小错误)

2) 安装以下组件:

npm install --save-dev babel-polyfill babel-preset-es2015 babel-preset-stage-3 babel-register
3) 修复.lrc文件:

{
  "presets": [
    "es2015",
    "stage-3"
  ]
}
4) 检查它是否工作(
-r
标志是预加载模块):

要修复nodemon,请执行以下操作:

nodemon -r babel-register -r babel-polyfill experiment/socketio/test.js

async/await
不是ES7的一部分,这是一个建议。@FelixKling确实是,但你明白我的意思:)请尽量避免在你的演讲中使用冒犯性的词语/短语questions@rossipedia我不觉得“弱智”这个词有冒犯性,这是一个解释性的问题。有更糟糕的话你应该更担心。老实说,我也不担心。但那是真的。非常确定async/await处于第1阶段或第2阶段。Ok添加了它,仍然不会影响任何东西:/就提案而言是的,但实现不是。解析语法可能包括在内,但转换本身不是。是的:(实际上是第三阶段)我修正了它!检查问题的底部以查看:)
"plugins": ["transform-async-to-generator"]
npm install --save-dev babel-polyfill babel-preset-es2015 babel-preset-stage-3 babel-register
{
  "presets": [
    "es2015",
    "stage-3"
  ]
}
node -r babel-register -r babel-polyfill experiment/socketio/test.js
nodemon -r babel-register -r babel-polyfill experiment/socketio/test.js