NodeJSv4.1.1コードでBabelを使用します。
Requireフックを取得しました:
require("babel-core/register");
$appRoot = __dirname;
module.exports = require("./lib/controllers/app");
その後にロードされた.js
私がやっているファイル:
import { Strategy as LocalStrategy } from "passport-local";
ただし、これにより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)
正しいプリセットを使用していないように聞こえます。 babel 6の時点では、コアbabelローダーにはデフォルトで予想されるES6変換が含まれなくなりました(現在は汎用コードトランスフォーマープラットフォームです)。代わりにプリセットを使用する必要があります。
require('babel-register')({
"presets": ["es2015"]
});
プリセットパッケージもインストールする必要があります。
npm install --save-dev babel-preset-es2015
このファイルは変換されていないようです。これはその後ロードされますか.js
node_modulesディレクトリ内のファイル?もしそうなら、あなたはする必要があります:
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
});
デフォルトでは、node_modulesに必要なものはすべて無視されます。無視する正規表現を渡すことでこれをオーバーライドできます
Mochaを介してテストを実行しようとしたときに問題が発生していましたが、これをpackage.jsonファイルに入れることで解決しました。
"babel": {
"presets": [
"es2015"
]
},
私はこれがどのように機能するかについて完全に明確ではありません。私はこのようなテストを実行しています:
mocha --compilers js:babel-core/register --require ./test/test_helper.js --recursive
最終的に、これは私が思うにすべて理にかなっています。