web-dev-qa-db-fra.com

L'importation ne fonctionne pas sur Node.js version 11.8.0

J'écris un programme simple qui utilise un objet plein de mots du dictionnaire. Je veux importer cet objet à partir d'un fichier différent car il est très grand. Lorsque j'essaie de l'importer, j'obtiens une erreur qui ressemble à Node.js ne sait pas ce que c'est.

J'ai déjà essayé de réinstaller la dernière version de Node.js.

Voici le code important:

import {dict} from './words_dictionary'

Et voici tout cela:

import {dict} from './words_dictionary'


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

Voici l'essentiel du code du dictionnaire:

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}

Je m'attendais à vrai, mais j'ai eu cette erreur:

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 fonctionne maintenant, mais je reçois maintenant l'erreur de dict non définie. Cela peut-il avoir quelque chose à voir avec la taille du fichier, car j'ai vérifié plusieurs fois les fautes d'orthographe?

3
MilesZew

Avez-vous pu utiliser le clavier import ailleurs dans votre code? Le problème ici peut être que vous ne transpilez pas votre code dans ECMAScript 5. Puisque import est une fonctionnalité ECMAScript 6, elle n'a pas encore été entièrement prise en charge par Node.js. Si vous utilisez un outil comme Babel pour transpiler votre code, vous pouvez résoudre ce problème. Si vous ne souhaitez pas le faire, essayez plutôt d'utiliser require.

Comme indiqué, dans Node.js 9+, vous pouvez également l'utiliser dans des fichiers .mjs avec le --experimental-modules indicateur activé.

node --experimental-modules file.mjs

Compatibilité Node.js import

6
jaredgorski

Il n'est pris en charge qu'avec un indicateur expérimental. Vous devez utiliser le --experimental-modules drapeau.

Ou utilisez simplement require simple comme ça ou si vous le voulez vraiment, vous pouvez transpiler votre code avec browserify, babel ou colis ou autre.

Je pense que cela devrait fonctionner si vous exécutez du code comme celui-ci:

node --experimental-modules index.mjs

Notez qu'il utilise l'extension mjs (JavaScript modulaire je pense).

3
dankobgd

Vous essayez ça. J'espère que ça aide

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

Dans ton cas

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