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
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
.
node --experimental-modules my-app.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 :
Le travail est en cours mais cela va prendre du temps - Nous envisageons actuellement environ un an au moins.
Jusqu'à ce que le support apparaisse de manière native, vous devrez continuer à utiliser les déclarations require
classiques :
const express = require("express");
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
var express = require("express");
Vérifiez également que Express est installé en exécutant
$ npm install express
Consultez les [Node.js Docs][1] pour plus d'informations sur l'apprentissage de Node.js.
Erreur: SyntaxError : Unxpected token import ou SyntaxError : Unxpected token export
Solution: Changez toutes vos importations comme exemple
const express = require('express');
const webpack = require('webpack');
const path = require('path');
const config = require('../webpack.config.dev');
const open = require('open');
Et changez aussi votre export default = foo;
en module.exports = foo;