web-dev-qa-db-fra.com

importation Word réservée inattendue dans node.js

J'essaie de lancer le serveur dorsal node.js. J'ai reçu l'erreur unexpected reserved Word lors de l'importation dans le fichier Node.js.

Les lignes du fichier core.module.js sont:

'use strict';
import lodashMixins from './lodashMixins.js'
... other imports and configurations ...

Je lance une commande simple: node core.module.js

Ce n'est pas une erreur rare, mais cela se produit généralement avec d'autres bibliothèques. Je n'ai pas vu de solution pour Node.js. Comment dois-je résoudre ce problème? J'utilise Windows Server.

Edit: J'ai découvert qu'il s'agissait d'ES6, mais comment pourrais-je le lancer? Cela ressemble à du backend pour l'application, mais je n'ai aucune idée de la commande à utiliser pour le lancer sans erreur.

53
Dracontis

Le mot clé import fait partie de les modules figurent dans ECMAScript 2015 , avec export et quelques autres spécifications.

Il n'est actuellement pas implémenté de manière native dans NodeJS, même sur la dernière version (v0.12.7), ni pris en charge dans les iojs les plus conviviaux de l'ES2015.

Vous devrez utiliser un transpiler pour que cela fonctionne.

[edit] il n'est toujours pas supporté dans la dernière version (v5.8) malgré l'existence d'un drapeau --harmony_modules, qui ne fait rien . Votre meilleure course consiste à utiliser babel, comme expliqué ici et ici

34
Amit

import fait partie de ECMAScript 2015 (ES6) standard et, comme Amit mentionné ci-dessus, il n'est actuellement pas implémenté de manière native dans Nodejs.

Vous pouvez donc utiliser transpiler comme babel pour exécuter votre script es6

npm install babel

Un exemple basé sur ceci réponse

app.js

 import {helloworld,printName} from './es6'
 helloworld();
 printName("John");

es6.js

 module.exports = {
    helloworld: function() { console.log('hello world!'); },
    printName: function(name) { console.log(name); }
}

Et en utilisant require hook dans start.js

require("babel/register");
var app = require("./app.js");

Et lancez votre application en tant que

node start.js

EDIT La réponse ci-dessus était basée sur babel v5.8.23. Pour babel >= v6

Utilisez require hook dans start.js en tant que

require('babel-core/register');
require("./app.js");

De plus, les transformations ne sont pas activées par défaut. Vous devrez donc installer un preset. Dans ce cas, utilisez es2015

npm install babel-preset-es2015

Et utilisez-le dans un fichier .babelrc dans le dossier racine

{
   "presets": ["es2015"]
}
51
Sami

J'ai rencontré ce problème alors que j'installais manuellement l'un de ces outils en dehors de Visual Studio. Mais Visual Studio est fourni avec plusieurs outils de ligne de commande open source utilisés dans les flux de travaux de développement Web modernes. Voici comment vous pouvez dire à Visual Studio d’utiliser la même version que celle que vous avez installée manuellement.

Allez dans Outils -> Options -> Projets et solutions -> Outils Web externes

  • Définissez la variable d’environnement PATH globale avant le chemin interne. Vous pouvez simplement utiliser les flèches situées en haut à droite pour modifier l’ordre.

ou

  • Tout d’abord, recherchez l’installation Node.js que vous avez déjà et utilisez-la en ligne de commande. Par défaut, Node.js 0.12.7 est installé sur "C:\Program Files\nodejs". Ajoutez cette entrée en haut du chemin d'accès au répertoire node.js pour forcer Visual Studio à utiliser cette version
2
sree