J'essaie d'exécuter du code ES6 dans mon projet, mais j'obtiens une erreur inattendue d'exportation de jeton.
export class MyClass {
constructor() {
console.log("es6");
}
}
Vous utilisez la syntaxe du module ES6.
Cela signifie que votre environnement (par exemple, node.js) doit prendre en charge la syntaxe du module ES6.
NodeJS utilise la syntaxe du module CommonJS (module.exports
) et non celle du module ES6 (mot clé export
).
Solution:
babel
npm pour transpiler votre ES6 sur une cible commonjs
ou
Si vous obtenez cette erreur, cela pourrait également être lié à la manière dont vous avez inclus le fichier javascript dans votre page html. Lors du chargement de modules, vous devez déclarer explicitement ces fichiers en tant que tels. Voici un exemple:
//module.js:
function foo(){
return "foo";
}
var bar = "bar";
export { foo, bar };
Lorsque vous incluez le script comme ceci:
<script src="module.js"></script>
Vous obtiendrez l'erreur:
Uncaught SyntaxError: exportation de jeton inattendue
Vous devez inclure le fichier avec un attribut type défini sur "module":
<script type="module" src="module.js"></script>
Et puis cela fonctionnera comme prévu et vous serez prêt à importer votre module dans un autre module:
import { foo, bar } from "./module.js";
console.log( foo() );
console.log( bar );
Pour utiliser ES6, ajoutez babel-preset-env
et dans votre .babelrc
:
{
"presets": ["@babel/preset-env"]
}
Réponse mise à jour grâce à @ghanbari comment appliquer babel 7.
Installez les paquets babel @babel/core
et @babel/preset
qui convertiront ES6 en une cible commonjs car le noeud js ne comprend pas directement les cibles ES6.
npm install --save-dev @babel/core @babel/preset-env
Ensuite, vous devez créer un fichier de configuration avec le nom .babelrc
dans le répertoire racine de votre projet et y ajouter ce code.
{ "presets": ["@babel/preset-env"] }