4
votes

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 souhaite importer cet objet à partir d'un fichier différent car il est très volumineux. En essayant 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 l'important code:

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)

Et voici tout:

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}

Voici l'essentiel du code du dictionnaire: p>

import {dict} from './words_dictionary'


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

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

import {dict} from './words_dictionary'

ECMAScript 6 fonctionne maintenant, mais j'obtiens maintenant le erreur de dict non définie. Cela pourrait-il avoir quelque chose à voir avec la taille du fichier, car j'ai vérifié plusieurs fois les fautes d'orthographe?


1 commentaires

Q1: Est-ce que cela a déjà fonctionné, avec n'importe quelle version de NodeJS? Q2: Le fichier passe-t-il la validation JSON (par exemple, https://jsonlint.com )? Si Q1 = N et Q2 = Y, envisagez de remplacer «require» par «import» (et de modifier votre syntaxe en conséquence).


3 Réponses :


3
votes

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

Ou utilisez simplement require simple comme ça ou si vous le souhaitez vraiment, vous pouvez transpiler votre code avec browserify, babel ou parcel ou autre. p>

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 I penser).


0 commentaires

6
votes

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 voulez pas faire cela, essayez plutôt d'utiliser require .

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

node --experimental-modules file.mjs

Compatibilité Node.js import


0 commentaires

1
votes

Vous essayez ceci. J'espère que cela aide

const  dict = require( './words_dictionary')

Dans votre cas

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


0 commentaires