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叹息…为什么未来一切都很酷。