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)
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
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
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.