私はes2015にBabel 6を使用していますが、babel-preset-es2015
とbabel-preset-react
を必要とする反応があります。
.babelrc
にpresets
プロパティを追加しますが、エラーがスローされます。
ERROR in ./src/client/entry.js
Module build failed: ReferenceError: [BABEL] /Users/brick/Dropbox/learncoding/node.js/isomorphic/src/client/entry.js: Unknown option: /Users/brick/Dropbox/learncoding/node.js/isomorphic/.babelrc.presets
at Logger.error (/Users/brick/Dropbox/learncoding/node.js/isomorphic/node_modules/babel-core/lib/transformation/file/logger.js:58:11)
at OptionManager.mergeOptions (/Users/brick/Dropbox/learncoding/node.js/isomorphic/node_modules/babel-core/lib/transformation/file/options/option-manager.js:126:29)
at OptionManager.addConfig (/Users/brick/Dropbox/learncoding/node.js/isomorphic/node_modules/babel-core/lib/transformation/file/options/option-manager.js:107:10)
at OptionManager.findConfigs (/Users/brick/Dropbox/learncoding/node.js/isomorphic/node_modules/babel-core/lib/transformation/file/options/option-manager.js:168:35)
at OptionManager.init (/Users/brick/Dropbox/learncoding/node.js/isomorphic/node_modules/babel-core/lib/transformation/file/options/option-manager.js:229:12)
at File.initOptions (/Users/brick/Dropbox/learncoding/node.js/isomorphic/node_modules/babel-core/lib/transformation/file/index.js:147:75)
at new File (/Users/brick/Dropbox/learncoding/node.js/isomorphic/node_modules/babel-core/lib/transformation/file/index.js:137:22)
at Pipeline.transform (/Users/brick/Dropbox/learncoding/node.js/isomorphic/node_modules/babel-core/lib/transformation/pipeline.js:164:16)
at transpile (/Users/brick/Dropbox/learncoding/node.js/isomorphic/node_modules/babel-loader/index.js:12:22)
at Object.module.exports (/Users/brick/Dropbox/learncoding/node.js/isomorphic/node_modules/babel-loader/index.js:69:12)
@ multi main
私の.babelrc
ファイルは次のとおりです。
{
"presets": [
"es2015",
"react"
]
}
babel src -d lib
コマンドを実行できますが、動作します。しかし、npm start
を実行してpackage.json
経由でbabel
を実行すると、エラーが表示されます。
アプリが実行されるため、エラーを無視できると思います。しかし、私はこのエラーの理由を知り、それが何に影響するかを知りたいです。
package.json
のscripts
は次のとおりです。
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"clean": "rm -rf lib",
"build": "npm run clean && /usr/local/bin/babel src -d lib --experimental",
"server": "nodemon lib/server/server",
"dev-server": "node lib/server/webpack",
"watch-js": "/usr/local/bin/babel src -d lib --experimental -w",
"start": "npm run watch-js & npm run dev-server & npm run server"
},
私のentry.js
は
import React from "react";
import Router from "react-router";
import ReactDOM from "react-dom";
import routes from "./routes";
import DataWrapper from './DataWrapper';
import createBrowserHistory from 'history/lib/createBrowserHistory';
let history = createBrowserHistory();
var data = JSON.parse(document.querySelector('#data').innerHTML);
ReactDOM.render(<DataWrapper data={data}><Router history = {history}>{routes}</Router></DataWrapper>, document.querySelector('#app'));
この問題はbabel-loader
とbabel-core
のバージョンが原因であることがわかりました。
package.json
で依存関係が^5.3.3
と記載されているため、6.xに更新されません。 >=5.3.3
または^6.0.0
に変更します。
^
は、サブバージョンをアップグレードすることを意味しますが、メインバージョンはアップグレードしません。
preact
をビルドしようとしたときにこのエラーに遭遇しました。親ディレクトリに干渉している.babelrc
ファイルがありました。削除すると問題はなくなりました。
これらのプリセットライブラリが実際にnode_modules
。
同様のエラーメッセージが少しありました。その理由は、react
プリセットをbabelに使用しようとしていたが、babel-react-preset
は私のnode_modules
。最終結果は、Babelがreact
ライブラリーの内容をプリセットとして使用しようとしていたことです。
ERROR in ./ui/js/myproject.js
Module build failed: ReferenceError: [BABEL] /home/jsyrjala/myproject/ui/js/myproject.js: Unknown option: /home/jsyrjala/myproject/node_modules/react/react.js.Children
at Logger.error (/home/jsyrjala/myproject/node_modules/babel-core/lib/transformation/file/logger.js:43:11)
at OptionManager.mergeOptions (/home/jsyrjala/myproject/node_modules/babel-core/lib/transformation/file/options/option-manager.js:270:18)
at OptionManager.mergePresets (/home/jsyrjala/myproject/node_modules/babel-core/lib/transformation/file/options/option-manager.js:333:16)
at OptionManager.mergeOptions (/home/jsyrjala/myproject/node_modules/babel
babel src --out-dir lib
で作業できますが、npm run XXX
では使用できません。 [email protected] CLIをマシンにグローバルにインストールし、babel-cli @ローカルプロジェクトをインストールした後、npm run
で動作します。
私のような場合には、同じエラーをスローするbabelをグローバルにインストールしています。最初にbabelをアンインストールしてから、依存関係の一部としてbabel-cli ^ 6.26.0をインストールしてから、コマンドnpm startを再度実行してください。