Webpackとbabelをそれぞれ4、7にアップグレードしようとしましたが、動作しませんでした。また、 公式ドキュメント はアップグレードにはあまり役立ちません
次の問題が発生しています
コンパイラエラー:モジュール '@ babel/core' @ multi mainが見つかりません
私が使用している依存関係:
"babel-core": "^6.26.3",
"babel-eslint": "^9.0.0",
"babel-loader": "^8.0.0",
"babel-plugin-transform-class-properties": "^6.24.1",
"babel-plugin-transform-object-rest-spread": "^6.26.0",
"babel-polyfill": "^6.26.0",
"babel-preset-env": "^1.7.0",
"babel-preset-react": "^6.24.1",
"webpack": "^4.15.0",
"webpack-cli": "^3.0.8",
"webpack-dev-server": "^3.1.4"
詳細が必要な場合はお知らせください。
Babelは、モジュールの名前babel-core
を @ babel/core に変更しました。 npm install @babel/core
を実行するだけです。これにより、Babelコアの最新バージョンがインストールされます。
Babelのほとんどのパッケージは、@babel/PACKAGE_NAME
というパターンに従うように名前が変更されました。したがって、アップグレードする場合は、パッケージ名をパターンに従って変更し、npm install
を実行します。
Babel 7にアップグレードするには、これを使用できます 移行ガイド 。
babel-upgrade を使用します
テスト済み[email protected]、[email protected]および[email protected]
次のスクリプトを使用できます。 (ノード5以降のnpxのみ)
npx babel-upgrade --write
--writeフラグは、package.jsonおよび.babelrcに更新を書き込みます。
package.jsonに次の変更を加えることになります。
"devDependencies": {
"@babel/core": "^7.4.0",
"@babel/plugin-proposal-class-properties": "^7.0.0",
"@babel/plugin-proposal-json-strings": "^7.0.0",
"@babel/plugin-proposal-private-methods": "^7.4.0",
"@babel/plugin-syntax-dynamic-import": "^7.0.0",
"@babel/plugin-syntax-import-meta": "^7.0.0"
}
。babelrc
{
"plugins": [
"@babel/plugin-syntax-dynamic-import",
"@babel/plugin-syntax-import-meta",
[
"@babel/plugin-proposal-class-properties"
],
"@babel/plugin-proposal-json-strings",
[
"@babel/plugin-proposal-private-methods"
]
]
}
上記のプラグインのうち、必要な@babel/plugin-proposal-class-properties @babel/plugin-proposal-private-methods
実装することを選択した場合、プライベートプロパティを正しく機能させる。
Eslintを使用している場合、。eslintrcファイルでパーサーをbabel-eslintのように設定することを忘れないでください:
{
"parser": "babel-eslint"
}
Babel-upgradeを使用すると、スムーズにアップグレードできます。
https://github.com/babel/babel-upgrade
npm Prune
その後、node_modulesの古いパッケージを破棄します。
編集:
Babel-upgradeを試しても、babelとwebpackの設定は変更されませんでした。手動で変更する必要がありました。以下に例を示します。
.babelrc
"presets": ["@babel/env", "@babel/react"]
webpack config
loader: 'babel-loader',
options: { presets: ['@babel/env', '@babel/react']}