1. ホーム
  2. javascript

[解決済み] SyntaxError: 予期しないトークン関数 - Async Await Nodejs

2022-02-17 13:52:34

質問

Nodeのバージョンを使って実験していました。 6.2.1 を私のコードの一部で使用しました。ハイパーコールバック指向のコードのほとんどを、見た目がきれいで、たぶん性能もよいものに移行する計画があった。

ノードコードを実行しようとすると、ターミナルでエラーが発生するのですが、なぜでしょうか?

helloz.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:

Quentinが提案したように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 | })();

解決方法は?

非同期関数は バージョン 7.6 より古い Node のバージョンではサポートされていません。 .

コードをトランスパイルする必要があります(例えば バベル ) を、Nodeが理解できるJSのバージョンに変更します。

それはそうと。 Node.jsのバージョン 非同期関数をサポートしていないものは、現在すべて End Of Life を過ぎてサポートされていないため、もし以前のバージョンを使っているならば、アップグレードを強く検討すべきです。