Node.js - SyntaxError: 予期しないトークンのインポート 質問する

Node.js - SyntaxError: 予期しないトークンのインポート 質問する

何が問題なのか分かりません。Node v5.6.0 NPM v3.10.6

コード:

function (exports, require, module, __filename, __dirname) {
    import express from 'express'
};

エラー:

SyntaxError: Unexpected token import
    at exports.runInThisContext (vm.js:53:16)
    at Module._compile (module.js:387:25)
    at Object.Module._extensions..js (module.js:422:10)
    at Module.load (module.js:357:32)
    at Function.Module._load (module.js:314:12)
    at Function.Module.runMain (module.js:447:10)
    at startup (node.js:140:18)
    at node.js:1001:3

ベストアンサー1

ノード13以降ノード13拡張機能を使用するか.mjs{"type": "module"}package.json で設定することができます。フラグを使用する必要はありません--experimental-modulesモジュールはnode.jsで安定版としてマークされるようになりました

ノード12以降ノード 12拡張機能を使用するか.mjs"type": "module"package.json で設定することができます。フラグを付けて node を実行する必要があります--experimental-modules

ノード9インノード9フラグによって有効化され、.mjs拡張機能を使用します。

node --experimental-modules my-app.mjs

import確かに ES6 の一部ではあります が、 残念ながら NodeJS ではまだデフォルトでサポートされておらず、ごく最近になってブラウザーでサポートされるようになりました。

見るMDN のブラウザ互換性表そしてこのノードの問題

ジェームズ・M・スネルのNode.js の ES6 モジュールのアップデート(2017年2月):

作業は進行中ですが、しばらく時間がかかります。現時点では少なくとも 1 年程度かかると見込んでいます。

サポートがネイティブに表示されるまで(Node 13以降で安定版としてマークされました) の場合は、 従来の ステートメント を引き続き使用する必要があります require

const express = require("express");

NodeJS で新しい ES6/7 機能を本当に使用したい場合は、Babel を使用してコンパイルできます。ここにサーバーの例があります

おすすめ記事