私のビルドプロセスにReactアプリに関する問題があります。
私は常に次のエラーを受け取ります:
モジュールが見つかりません:エラー: 'core-js/es6'を解決できません
これをpolyfill.jsで使用する場合:
import 'core-js/es6';
それが私のpackage.jsonです:
{
"name": "test",
"version": "1.0.0",
"main": "index.js",
"license": "MIT",
"private": true,
"devDependencies": {
"@babel/core": "^7.4.0",
"@babel/preset-env": "^7.4.2",
"@babel/preset-react": "^7.0.0",
"@babel/runtime": "^7.4.2",
"babel-loader": "^8.0.5",
"babel-preset-es2015": "^6.24.1",
"copy-webpack-plugin": "^5.0.2",
"css-hot-loader": "^1.4.4",
"eslint": "5.15.3",
"eslint-config-airbnb": "^17.1.0",
"eslint-loader": "^2.1.2",
"eslint-plugin-import": "2.16.0",
"eslint-plugin-jsx-a11y": "6.2.1",
"eslint-plugin-react": "7.12.4",
"file-loader": "^3.0.1",
"node-sass": "^4.11.0",
"prettier": "^1.16.4",
"react-hot-loader": "4.8.0",
"sass-loader": "^7.1.0",
"webpack": "^4.29.6",
"webpack-cli": "^3.3.0",
"webpack-dev-server": "^3.2.1"
},
"dependencies": {
"axios": "^0.18.0",
"core-js": "^3.0.0",
"prop-types": "^15.7.2",
"react": "^16.8.5",
"react-dom": "^16.8.5",
"react-redux": "^6.0.1",
"react-string-replace": "^0.4.1",
"redux": "^4.0.1",
"slick-carousel": "^1.8.1"
},
"scripts": {
"dev": "webpack-dev-server --hot",
"build": "webpack --colors --profile --progress --env.mode production",
"lint": "eslint ./src/ --ext .js,.jsx"
}
}
誰かがここで助けてもらえますか?
projectpath\src\polyfill.jsにpolyfill.jsという名前のファイルが作成され、そのファイルには次の行のみが含まれます:import 'core-js';このポリフィルはes-6だけでなく、バージョン3.0.0以降のcore-jsを使用する正しい方法です。
polyfill.jsを次のようにwebpack-fileエントリ属性に追加しました:
entry: ['./src/main.scss', './src/polyfill.js', './src/main.jsx']
完璧に動作します。
私はここにもいくつかの詳細情報を見つけました: https://github.com/zloirock/core-js/issues/184
ライブラリの作者(zloirock)は次のように主張しています:
ES6はES5で追加されたほぼすべての機能の動作を変更するため、core-js/es6エントリポイントにはほぼすべての機能が含まれています。また、あなたが書いたように、それは壊れたブラウザ実装を修正するために必要です。
(引用 https://github.com/zloirock/core-js/issues/184 zloirockから)
import 'core-js';で十分だと思います。
インポートはcore-jsバージョン3.0.1で変更されました-たとえば
import 'core-js/es6/array';
およびimport 'core-js/es7/array';
次の方法で簡単に提供できます
import 'core-js/es/array';
core-js全体を持ち込みたくない場合
可能な答えを見つけました。 core-jsバージョン3.0があり、このバージョンにはES6とES7の個別のフォルダーがありません。そのため、アプリケーションは正しいパスを見つけることができません。
このエラーを解決するには、core-jsバージョンを2.5.7にダウングレードします。このバージョンは、別々のES6およびES7フォルダーを使用して、正しいカタログ構造を生成します。
バージョンをダウングレードするには、次のコマンドを実行します。
npm i -S [email protected]
私の場合、Angularの場合、これは問題なく動作します。
Polyfills.tsとpolyfills.tsのすべての「es6」と「es7」を「es」に変更します(オプション)。
import 'core-js/es6/symbol';
import 'core-js/es/symbol';
Angular 8に移行した後、「core-js/es6」または「core-js/es7」は機能しません。
あなたは単にインポート 'core-js/es /'を置き換える必要があります
例のために。 「core-js/es6/symbol」をインポートして「core-js/es/symbol」をインポートする
これは正しく動作します。
確かに、私は同様の問題と簡単な問題がありました
npm uninstall @babel/polyfill --save &&
npm install @babel/polyfill --save
私のためにトリックをしました。
ただし、@ babel/polyfillの使用は推奨されていません( このコメント によると)。古いパッケージがインストールされていると思われる場合、または他のすべてが失敗した場合にのみ、これを試してください。
Tsconfig.jsonで "target": "es2015"を "target": "es5"に変更するだけです。
Angular 8.2.XX
IE11とEdgeでテスト済み