web-dev-qa-db-ja.com

Node.jsバージョン11.8.0でインポートが機能しない

辞書の単語でいっぱいのオブジェクトを使用する簡単なプログラムを書いています。そのオブジェクトは非常に大きいので、別のファイルからインポートしたいと思います。それをインポートしようとすると、Node.jsがそれが何であるかを知らないようなエラーが表示されます。

Node.jsの最新バージョンを再インストールしてみました。

ここに重要なコードがあります:

import {dict} from './words_dictionary'

そして、それがすべてです:

import {dict} from './words_dictionary'


function exists(obj,str) {
  if(obj[str]) {
    return true
  } else {
    return false
  }
}
console.log(exists(dict, 'hello'))

辞書コードの要点は次のとおりです。

export let dict = {a: 1, aa: 1, aaa: 1, aah: 1, aahed: 1, aahing: 1, aahs:
1, aal: 1, aalii: 1, aaliis: 1, aals: 1, aam: 1, aani: 1, aardvark: 1,
aardvarks: 1,...~3000 more}

私は本当だと思っていましたが、このエラーが発生しました:

SyntaxError: Unexpected token {
at new Script (vm.js:84:7)
at createScript (vm.js:264:10)
at Object.runInThisContext (vm.js:312:10)
at Module._compile (internal/modules/cjs/loader.js:696:28)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:747:10)
at Module.load (internal/modules/cjs/loader.js:628:32)
at tryModuleLoad (internal/modules/cjs/loader.js:568:12)
at Function.Module._load (internal/modules/cjs/loader.js:560:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:801:12)
at executeUserCode (internal/bootstrap/node.js:526:15)

ECMAScript 6は現在機能していますが、dictが定義されていないというエラーが発生します。スペルミスを複数回チェックしたため、これはファイルサイズと関係があるのでしょうか?

3
MilesZew

コードの他の場所でimportキーボードを使用できましたか?ここでの問題は、コードをECMAScript 5に変換していないことである可能性があります。importはECMAScript 6の機能であるため、Node.jsではまだ完全にサポートされていません。 Babelのようなツールを使用してコードをトランスパイルする場合、この問題を修正できます。これを実行したくない場合は、代わりにrequireを使用してください。

前述のように、Node.js 9以降では、--experimental-modulesフラグを有効にして.mjsファイルで使用することもできます。

node --experimental-modules file.mjs

Node.js import互換性

6
jaredgorski

これは実験的なフラグでのみサポートされています。 --experimental-modulesフラグを使用する必要があります。

または、require simpleをそのまま使用するか、本当に必要な場合は、browserify、babel、parcelなどを使用してコードをトランスパイルできます。

次のようなコードを実行すれば、これでうまくいくと思います:

node --experimental-modules index.mjs

mjs拡張子を使用していることに注意してください(モジュール式のJavaScriptだと思います)。

3
dankobgd

あなたはこれを試してみてください。それが役に立てば幸い

const 'your_variable' = require('your_required_module or file_path')

あなたの場合

const  dict = require( './words_dictionary')
0
Shabbir Ahmed