1. ホーム
  2. javascript

[解決済み] Node.js 7.5で「await Unexpected identifier」が発生する。

2022-02-06 03:13:22

質問

を使って実験しています。 await というキーワードをNode.jsで使用しています。私はこのテストスクリプトを持っています。

"use strict";
function x() {
  return new Promise(function(resolve, reject) {
    setTimeout(function() {
      resolve({a:42});
    },100);
  });
}
await x();

しかし、これをnodeで実行すると、次のようになります。

await x();
      ^
SyntaxError: Unexpected identifier

で実行しても node または node --harmony-async-await または、Node.js 7.5 または Node.js 8 (nightly build) を搭載した Mac の Node.js 'repl' で実行できます。

不思議なことに、同じコードがRunkitのJavaScriptノートブック環境でも動きます。 https://runkit.com/glynnbird/58a2eb23aad2bb0014ea614b

何が間違っているのでしょうか?

解決方法は?

他のコメント欄や他の研究者のおかげで awaitasync 関数の例

async function x() {
  var obj = await new Promise(function(resolve, reject) {
    setTimeout(function() {
      resolve({a:42});
    },100);
  });
  return obj;
}

そして、この関数をPromiseとして使うことができます。

x().then(console.log)

または別の非同期関数の中で行います。

紛らわしいことに、Node.js replでは、以下のようなことはできません。

await x();

のように、RunKitのノートブック環境がそうであるように。