何が問題なのか分かりません。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 を使用してコンパイルできます。ここにサーバーの例があります。