JavaScriptでimport fs from 'fs'
を使用したい。サンプルを次に示します。
import fs from 'fs'
var output = fs.readFileSync('someData.txt')
console.log(output)
node main.js
を使用してファイルを実行するとエラーが発生します:
(function (exports, require, module, __filename, __dirname) { import fs from 'fs
'
^^^^^^
SyntaxError: Unexpected token import
他の場所からモジュールと機能をインポートするには、ノードに何をインストールする必要がありますか?
ES6モジュールのサポート node.jsのかなり最近のものです。最先端のバージョンでも、まだ実験段階です。ノード10を使用すると、--experimental-modules
フラグを使用してノードを開始でき、おそらく機能します。
古いノードバージョンまたは標準ノード10でインポートするには、CommonJS構文を使用します。
const fs = require('fs');
デフォルトのエクスポートでは、次を使用する必要があります。
import * as fs from 'fs';
または、モジュールがexportsという名前を付けている場合:
import {fs} from 'fs';
例:
//module1.js
export function function1() {
console.log('f1')
}
export function function2() {
console.log('f2')
}
export default function1;
その後:
import defaultExport, { function1, function2 } from './module1'
defaultExport(); // This calls function1
function1();
function2();
さらに、es6 import
を使用できるようにするにはwebpackまたは類似のものを使用する必要があります。
import { readFileSync } from 'fs'
を使用するには、以下を行う必要があります。
node 10+
を使用している--experimental-modules
フラグ(ノード10)を使用します。 node --experimental-modules server.mjs(.mjsの説明については#3を参照)import
ステートメントを使用してファイルのファイル拡張子の名前を.mjs
に変更すると、。jsは機能しません。 server.mjs他の回答は1と2にヒットしますが、3も必要です。また、この機能はこの時点では非常に実験的であり(1/10の安定性)、生産には推奨されていませんが、おそらく引き続き使用することに注意してください。
RobertoNoveloの答えに基づいて:
import * as fs from 'fs';
現在、これを行う最も簡単な方法です。
Esm( https://github.com/standard-things/esm#readme )を使用してimport
を使用できるようにするノードプロジェクト(ノードv10.15.3)でテストしました。
新しいECMAScriptモジュールのサポートは、Node.js 12でネイティブにサポートされていますか????
昨日(2019-04-23)リリースされたため、フラグ--experimental-modules
を使用する必要はありません。
TypeScriptを使用している場合、ターミナル/コマンドプロンプトからコマンドnpm install @ types/nodeを実行して、タイプ定義ファイルを更新できます。