节点:试图使用`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