Détails
Node.js - SyntaxError : Importation inattendue d'un jeton
Je ne comprends pas ce qui ne va pas. Node v5.6.0 NPM v3.10.6
Le code :
function (exports, require, module, __filename, __dirname) {
import express from 'express'
};
L'erreur :
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
388
3
Mise à jour 3: Depuis [Node 13][7], vous pouvez utiliser soit l'extension .mjs, soit définir "type" : "module" ; dans votre package.json. Vous n'avez pas besoin d'utiliser le drapeau
--experimental-modules
.Mise à jour 2: Depuis [Node 12][6], vous pouvez utiliser soit l'extension
.mjs
, soit définir"type" : "module"
dans votre package.json. Et vous devez exécuter node avec le drapeau--experimental-modules
.Mise à jour: Dans [Node 9][1], il est activé derrière un drapeau, et utilise l'extension
.mjs
.Bien que
import
fasse effectivement partie de ES6, il n'est malheureusement pas encore supporté par défaut dans NodeJS, et n'a que très récemment obtenu le support dans les navigateurs.Voir [le tableau de compatibilité des navigateurs sur MDN][2] et [ce problème Node][3].
Extrait de [Update on ES6 Modules in Node.js][4] (février 2017) de James M Snell's :
Jusqu'à ce que le support apparaisse de manière native, vous devrez continuer à utiliser les déclarations
require
classiques :Si vous voulez vraiment utiliser les nouvelles fonctionnalités ES6/7 de NodeJS, vous pouvez le compiler en utilisant Babel. [Voici un exemple de serveur][5].
[1] : https://nodejs.org/api/esm.html [2] : https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Statements/import#Browser_compatibility [3] : https://github.com/nodejs/help/issues/53 [4] : https://medium.com/the-node-js-collection/an-update-on-es6-modules-in-node-js-42c958b890c [5] : https://github.com/babel/example-node-server [6] : https://thecodebarbarian.com/nodejs-12-imports [7] : https://github.com/nodejs/node/releases/tag/v13.2.0
Malheureusement, Node.js ne supporte pas encore le
import
de ES6.Pour accomplir ce que vous essayez de faire (importer le module Express), le code suivant devrait suffire
Vérifiez également que Express est installé en exécutant
Consultez les [Node.js Docs][1] pour plus d'informations sur l'apprentissage de Node.js.
[1] : https://nodejs.org/en/docs/
Erreur: SyntaxError : Unxpected token import ou SyntaxError : Unxpected token export
Solution: Changez toutes vos importations comme exemple
Et changez aussi votre
export default = foo;
enmodule.exports = foo;