我只有:
router.post('/register', async (req, res) => {
// planning to use await in here
});
但是我收到了这个错误。我试过googling如果节点支持await / async但我似乎无法取得任何进展,我只是继续寻找原生模块将其实现到节点中(这很可能是问题,但我真的希望它的语法错误和该节点支持async / await本地)
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)
任何信息都会非常感谢。
答案 0 :(得分:3)
你在这里有一个选项是babel,它可以transpile这样的ES7语法可以运行节点。由于ES7仍然是一项正在进行中的工作,因此你不会得到异步/等待开箱即用,但是babel提供了一个变换(https://babeljs.io/docs/plugins/transform-async-to-generator/),你可以包含它来使其工作。
编辑: babel将其包含在stage3预设中。所以一旦你安装了babel和预设:
npm install babel-core babel-preset-stage-3
全局安装babel-cli,以便在shell中运行babel-node
npm install -g babel-cli
像这样创建一个.babelrc:
{
"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