语法错误:意外的令牌函数 - 异步等待 Nodejs

我正在尝试将Node版本6.2.1与我的一些代码一起使用。计划将大多数面向超回调的代码迁移到看起来更干净,也许性能更好的代码。

我不知道为什么,当我尝试执行节点代码时,终端抛出了一个错误。

你好.js

(async function testingAsyncAwait() {
    await console.log("Print me!");
})();

日志-

BOZZMOB-M-T0HZ:rest bozzmob$ node helloz.js 
/Users/bozzmob/Documents/work/nextgennms/rest/helloz.js:1
(function (exports, require, module, __filename, __dirname) { (async function testingAsyncAwait() {
                                                                     ^^^^^^^^
SyntaxError: Unexpected token function
    at Object.exports.runInThisContext (vm.js:53:16)
    at Module._compile (module.js:513:28)
    at Object.Module._extensions..js (module.js:550:10)
    at Module.load (module.js:458:32)
    at tryModuleLoad (module.js:417:12)
    at Function.Module._load (module.js:409:3)
    at Function.Module.runMain (module.js:575:10)
    at startup (node.js:160:18)
    at node.js:456:3
BOZZMOB-M-T0HZ:rest bozzmob$ node -v
v6.2.1

我错过了什么?请给我一些关于同样的光。


更新 1:

我试图像昆汀建议的那样使用Babel,但是,我仍然得到以下错误。

更新代码-

require("babel-core/register");
require("babel-polyfill");

    (async function testingAsyncAwait() {
        await console.log("Print me!");
    })();

日志-

BOZZMOB-M-T0HZ:rest bozzmob$ babel helloz.js > helloz.trans.js
SyntaxError: helloz.js: Unexpected token (3:7)
  1 | require("babel-polyfill");
  2 | 
> 3 | (async function testingAsyncAwait() {
    |        ^
  4 |     await console.log("Print me!");
  5 | })();

答案 1

早于版本 7.6 的 Node 版本不支持异步函数。

如果您使用的是旧版本,则需要将代码(例如使用Babel)转换为Node可以理解的JS版本。

也就是说,不支持异步函数的 Node.js 版本现在都已经过了生命周期结束,并且不受支持,因此,如果您使用的是早期版本,则应非常强烈地考虑升级。


答案 2

Nodejs 支持 7.6 版的 async/await。

发布帖子: https://v8project.blogspot.com.br/2016/10/v8-release-55.html