1. ホーム
  2. javascript

[解決済み] Node.js - SyntaxError: 予期しないトークンのインポート

2022-03-19 10:23:57

質問

何が問題なのかわかりません。 ノード 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

解決方法は?

ノード13以上 以来 ノード13 のどちらかを使用することができます。 .mjs を拡張するか、あるいは {"type": "module"} をpackage.jsonに記述してください。あなたは しない を使用する必要があります。 --experimental-modules フラグを使用します。 node.jsでModulesが安定版としてマークされるようになりました。

ノード12 以来 ノード12 のどちらかを使用することができます。 .mjs を拡張するか、あるいは "type": "module" をpackage.jsonに記述してください。そして、nodeを実行する際には --experimental-modules のフラグを立てます。

ノード9 ノード9 というフラグがあり、そのフラグの後ろで有効になっています。 .mjs を拡張した。

node --experimental-modules my-app.mjs


一方 import は確かにES6の一部です。 <ストライク は、残念ながらNodeJSではまだデフォルトでサポートされておらず、ごく最近になってブラウザでのサポートが開始されました。

参照 MDN のブラウザ互換性表 このNodeの問題 .

James M Snellの Node.jsのES6モジュールに関する最新情報 (2017年2月)をご参照ください。

<ブロッククオート

作業は進行中ですが、時間がかかりそうです。現在のところ、少なくとも1年前後を見込んでいます。

ネイティブでサポートが表示されるまで( Node 13+ で安定マークがつきました ), <ストライク を使用し続ける必要があります。 require ステートメント :

const express = require("express");

どうしてもNodeJSのES6/7の新機能を使いたい場合は、Babelを使ってコンパイルすることができます。 以下はサーバーの例です。 .