web-dev-qa-db-fra.com

Importation de mots réservés inattendue lors de l'utilisation de babel

Utiliser Babel dans mon code NodeJSv4.1.1.

Vous avez le crochet requis:

require("babel-core/register");

$appRoot = __dirname;

module.exports = require("./lib/controllers/app");

Dans un logement par la suite .js fichier que je fais:

import { Strategy as LocalStrategy } from "passport-local";

Cependant, cela génère l'erreur suivante dans la CLI:

import { Strategy as LocalStrategy } from "passport-local";
^^^^^^

SyntaxError: Unexpected reserved Word
    at exports.runInThisContext (vm.js:53:16)
    at Module._compile (module.js:413:25)
    at loader (/Users/*/Documents/Web/*/node_modules/babel-core/node_modules/babel-register/lib/node.js:128:5)
    at Object.require.extensions.(anonymous function) [as .js] (/Users/*/Documents/Web/*/node_modules/babel-core/node_modules/babel-register/lib/node.js:138:7)
    at Module.load (module.js:355:32)
    at Function.Module._load (module.js:310:12)
    at Module.require (module.js:365:17)
    at require (module.js:384:17)
    at module.exports (index.js:9:5)
    at Object.<anonymous> (app.js:102:39)
26
Rob

On dirait que vous n'utilisez pas les bons préréglages. À partir de babel 6, le chargeur de base de babel n'inclut plus les transformations ES6 attendues par défaut (c'est maintenant une plate-forme générique de transformateur de code), vous devez plutôt utiliser un préréglage:

require('babel-register')({
        "presets": ["es2015"]
});

Vous devrez également installer le package prédéfini:

npm install --save-dev babel-preset-es2015
25
Arkadiy Kukarkin

Il semble que ce fichier ne soit pas transpilé. Est-ce chargé par la suite .js fichier dans le répertoire node_modules? Si oui, vous devez:

require("babel-core/register")({
  // This will override `node_modules` ignoring - you can alternatively pass
  // an array of strings to be explicitly matched or a regex / glob
  ignore: false
});

Par défaut, tous les besoins de node_modules seront ignorés. Vous pouvez remplacer cela en passant un regex ignorer

https://babeljs.io/docs/usage/require/

3
pherris

Je rencontrais le problème en essayant d'exécuter des tests via mocha, et je l'ai résolu en le mettant dans mon fichier package.json:

"babel": {
    "presets": [
      "es2015"
    ]
},

Je ne sais pas très bien comment cela fonctionne. J'exécute des tests comme celui-ci:

mocha --compilers js:babel-core/register --require ./test/test_helper.js --recursive

Finalement, tout cela aura du sens, je suppose.

0
Cameron O'Rourke