web-dev-qa-db-ja.com

モジュールが見つかりません:エラー: 'core-js / es6'を解決できません

私のビルドプロセスに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"
  }
}

誰かがここで助けてもらえますか?

96
Gutelaunetyp

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';で十分だと思います。

1
Gutelaunetyp

インポートはcore-jsバージョン3.0.1で変更されました-たとえば

import 'core-js/es6/array';およびimport 'core-js/es7/array';

次の方法で簡単に提供できます

import 'core-js/es/array';

core-js全体を持ち込みたくない場合

124
LeaveTheCapital

可能な答えを見つけました。 core-jsバージョン3.0があり、このバージョンにはES6ES7の個別のフォルダーがありません。そのため、アプリケーションは正しいパスを見つけることができません。

このエラーを解決するには、core-jsバージョンを2.5.7にダウングレードします。このバージョンは、別々のES6およびES7フォルダーを使用して、正しいカタログ構造を生成します。

バージョンをダウングレードするには、次のコマンドを実行します。

npm i -S [email protected]

私の場合、Angularの場合、これは問題なく動作します。

81
Kamil Naja

Polyfills.tsとpolyfills.tsのすべての「es6」と「es7」を「es」に変更します(オプション)。

  • から:import 'core-js/es6/symbol';
  • 宛先:import 'core-js/es/symbol';
29
Koyuchha

Angular 8に移行した後、「core-js/es6」または「core-js/es7」は機能しません。

あなたは単にインポート 'core-js/es /'を置き換える必要があります

例のために。 「core-js/es6/symbol」をインポートして「core-js/es/symbol」をインポートする

これは正しく動作します。

16
Bhadresh Patel

確かに、私は同様の問題と簡単な問題がありました

npm uninstall @babel/polyfill --save &&
npm install @babel/polyfill --save

私のためにトリックをしました。

ただし、@ babel/polyfillの使用は推奨されていません( このコメント によると)。古いパッケージがインストールされていると思われる場合、または他のすべてが失敗した場合にのみ、これを試してください。

4
otech47

Tsconfig.jsonで "target": "es2015"を "target": "es5"に変更するだけです。

Angular 8.2.XX

IE11とEdgeでテスト済み

3
jspassov