Javascript 节点:尝试使用“异步函数”引发错误

Javascript 节点:尝试使用“异步函数”引发错误,javascript,node.js,asynchronous,Javascript,Node.js,Asynchronous,我只有: router.post('/register', async (req, res) => { // planning to use await in here }); 但我得到了这个错误。我曾尝试在Google上搜索node是否支持await/async,但我似乎没有取得任何进展,我只是不断寻找本机模块将其实现到node中(这很可能是个问题,但我真的希望这是一个语法错误,并且该node本机支持async/await) router.post('/register

我只有:

router.post('/register', async (req, res) => {
    // planning to use await in here
});    
但我得到了这个错误。我曾尝试在Google上搜索node是否支持await/async,但我似乎没有取得任何进展,我只是不断寻找本机模块将其实现到node中(这很可能是个问题,但我真的希望这是一个语法错误,并且该node本机支持async/await)

router.post('/register',异步(req,res)=>{
^
SyntaxError:意外标记(
在exports.runInThisContext(vm.js:53:16)
在模块处编译(Module.js:374:25)
在Object.Module.\u extensions..js(Module.js:405:10)
在Module.load(Module.js:344:32)
在Function.Module.\u加载(Module.js:301:12)
at Module.require(Module.js:354:17)
根据需要(内部/module.js:12:17)
在对象上。(/app.js:13:15)
在模块处编译(Module.js:398:26)
在Object.Module.\u extensions..js(Module.js:405:10)
在Module.load(Module.js:344:32)
在Function.Module.\u加载(Module.js:301:12)
at Module.require(Module.js:354:17)
根据需要(内部/module.js:12:17)
在对象上。(/www:7:11)
在模块处编译(Module.js:398:26)

任何信息都非常感谢。

这里有一个选项,它可以将ES7语法转换为node可以运行的东西。由于ES7仍然是一项正在进行的工作,您无法立即获得async/await,但babel提供了一个转换(),您可以包括它来实现这项工作

编辑:babel的stage3预设中包含了这一点。因此,一旦您安装了babel和预设:

npm install babel-core babel-preset-stage-3
并全局安装babel cli,以便可以在shell中运行babel节点

npm install -g babel-cli
创建一个.lrc,如下所示:

{
  "presets": [
    "stage-3"
  ]
}
'use strict';

function bar() {
    return Promise.resolve('banana');
}

async function foo() {
    return await bar();
}

foo().then(console.log);
还有这样一个测试脚本:

{
  "presets": [
    "stage-3"
  ]
}
'use strict';

function bar() {
    return Promise.resolve('banana');
}

async function foo() {
    return await bar();
}

foo().then(console.log);
您可以确认它是这样工作的:

▶ babel-node test.js
banana

Node.js还不支持
async
关键字(仅供参考,它在ES2016中,甚至还没有标准化)。@thefourtheye叹息…为什么未来一切都很酷。