节点:试图使用`asynchronousfunction`抛出错误

我只有:

router.post('/register', async (req, res) => { // planning to use await in here }); 

但是我得到这个错误。 如果节点支持await / async,我试过Googlesearch,但我似乎无法得到任何进展,我只是继续find本地模块,以实现它到节点(这可能是问题,但我真的希望它的语法错误,该节点本地支持asynchronous/等待)

 router.post('/register', async (req, res) => { ^ SyntaxError: Unexpected token ( at exports.runInThisContext (vm.js:53:16) at Module._compile (module.js:374:25) at Object.Module._extensions..js (module.js:405:10) at Module.load (module.js:344:32) at Function.Module._load (module.js:301:12) at Module.require (module.js:354:17) at require (internal/module.js:12:17) at Object.<anonymous> (/app.js:13:15) at Module._compile (module.js:398:26) at Object.Module._extensions..js (module.js:405:10) at Module.load (module.js:344:32) at Function.Module._load (module.js:301:12) at Module.require (module.js:354:17) at require (internal/module.js:12:17) at Object.<anonymous> (/www:7:11) at Module._compile (module.js:398:26) 

任何信息将非常感谢。

这里有一个选项是babel ,它可以像这样将ES7语法转换成节点可以运行的东西。 由于ES7仍然是一个工作进展中,你不会得到asynchronous/等待开箱,但巴贝尔提供了一个变换( https://babeljs.io/docs/plugins/transform-async-to-generator/ ),你可以包括做这个工作。

编辑:巴贝尔已经包括在他们的stage3预置。 所以一旦你npm安装babel和预设:

 npm install babel-core babel-preset-stage-3 

并在全球范围内安装babel-cli,以便在shell中运行babel-node

 npm install -g babel-cli 

像这样创build一个.babelrc:

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

和这样的testing脚本:

 'use strict'; function bar() { return Promise.resolve('banana'); } async function foo() { return await bar(); } foo().then(console.log); 

你可以确认它是这样工作的:

 ▶ babel-node test.js banana