270 votes

Node.js - SyntaxError: Importation de jeton inattendue

Je ne comprends pas ce qui ne va pas. Nœud 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
 

315voto

Scimonster Points 24965

Mise à jour: Dans le Nœud 9, il est permis de derrière un drapeau, et utilise l' .mjs extension.

node --experimental-modules my-app.mjs

Alors qu' import est en effet partie de l'ES6, il n'est malheureusement pas encore prise en charge dans NodeJS par défaut, et n'a que très récemment débarqué de support dans les navigateurs.

Voir navigateur compat table sur MDN et ce Nœud en question.

De James M de Snell - mise à Jour sur l'ES6 Modules Node.js (février 2017):

Le travail est en cours, mais cela va prendre un peu de temps - Nous sommes actuellement à la recherche d'environ un an au moins.

Jusqu'à ce soutien s'affiche en mode natif, vous devez continuer à utiliser classique require déclarations:

const express = require("express");

Si vous voulez vraiment utiliser les nouvelles ES6/7 caractéristiques en NodeJS, vous pouvez le compiler à l'aide de Babel. Voici un exemple de serveur.

43voto

baranskistad Points 1206

Malheureusement, Node.js ne supporte pas encore les import ES6.

Pour accomplir ce que vous essayez de faire (importer le module Express), ce code devrait suffire

 var express = require("express");
 

Assurez-vous également que Express est installé en exécutant

 $ npm install express
 

Consultez la documentation de Node.js pour plus d'informations sur l'apprentissage de Node.js.

23voto

supritshah1289 Points 415

Error: SyntaxError: Unexpected token d'importation ou SyntaxError: Unexpected token à l'exportation


Solution: Changer toutes vos importations à titre d'exemple

const express 				= require('express');
const webpack				= require('webpack');
const path				= require('path');
const config				= require('../webpack.config.dev');
const open 				= require('open');

Et aussi changer votre export default = foo; de module.exports = foo;

8voto

ASTOMUSIC Points 109

si vous pouvez utiliser 'babel', essayez d'ajouter des scripts de construction dans package.json (- presets = es2015) comme ci-dessous. il fait pour précompiler le code d'importation en es2015

 "build": "babel server --out-dir build --presets=es2015 && webpack"
 

0voto

Ghita Tomoiaga Points 94

Dans mon cas, il s'occupait du fichier .babelrc , et il devrait contenir quelque chose comme:

 {
  "presets": ["es2015-node5", "stage-3"],
  "plugins": []
}
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by: