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


111

Reactアプリに関連するビルドプロセスに問題があります。

私は常に次のエラーを受け取ります:

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

これをpolyfill.jsで使用する場合:

'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"
  }
}

誰かがここで手伝ってくれる?


2
バージョンのアップグレード後の角度のアプリで同じエラー。このフォルダー(core-js / es6)がノードモジュールに存在するかどうかを確認します。
Kamil Naja

@KamilNaja同じ問題に直面しており、node_modulesにフォルダー(core-js / es6)が存在しません。node_modulesに(core-js / es)があります。何をすべきか?
Kunal Tyagi

回答:


153

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

import 'core-js/es6/array'; そして import 'core-js/es7/array';

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

import 'core-js/es/array';

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


18
angularを8に移行した後、エラーが発生しましたが、ソリューションで修正されました。
Nakres

8
これはangular 8に移行するためのソリューションです:)ありがとう
Kris Boyd

私のコードには何もないimport 'core-js/...ので、何をどこで変更すればよいですか?VueJS 2の使用
ボリューム1

@volumeoneは、ターミナルで「npm i core-js」を実行します。
Shivam Shukla

1
@ShivamShuklaありがとうございます。ただし、動作させるには2.6.11にダウングレードする必要がありました。mini-css-extract-pluginとcore-js 3の間にバグがあります
ボリューム1

95

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

このエラーを解決するには、core-jsバージョンを2.5.7にダウングレードできます。このバージョンでは、適切なカタログ構造が作成され、ES6フォルダーとES7フォルダーが個別に作成されます。

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

npm i -S core-js@2.5.7

私の場合、Angularを使用すると、これで問題ありません。


1
ありがとう、それは少なくとも解決策です。ダウングレードせずにバージョン3.0を使用するソリューションも見つけました。投稿
予定

真剣にライフセーバー。ありがとうございました。
IRCraziestTaxi

1
ダウングレードしても他のすべてが壊れない理由と、なぜ新しい形式に更新しないのかを説明できますか?あなたはこれが人々にとってうまく機能していることを示唆する賛成票をたくさん持っていますが、これは確かに長期的な解決策としては良くありません。
Simon_Weaver

したがって、完璧な解決策は、core-jsを使用して最新バージョンを使用するたびにインポートをアップグレードすることです。残念ながら、この依存関係が他のライブラリで使用されている場合、このソリューションは不可能になる可能性があり、回避策を使用する必要があります。
Kamil Naja

4
-1これはメッセージを取り除くためのバンドエイドです。パッケージのダウングレードは適切な方法ではありません。読者は、自分たちのインポートを修正することで、はるかにうまくいきます。だけでなく、それがあるだけで、簡単なようでない、より簡単な場合、それははるかに良い習慣です:stackoverflow.com/a/56186570/610573
クリス・ベイカー

42

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

  • から: import 'core-js/es6/symbol';
  • に: import 'core-js/es/symbol';

21

Angular8に移行した後、core-js/es6またはcore-js/es7動作しません。

インポートを置き換えるだけです core-js/es/

例のために。

import 'core-js/es6/symbol'  

import 'core-js/es/symbol'

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


Angular 8で動作します!
ihimv

これは私にとってはうまくいきますが、私はまだ混乱しています。この新しいシングルインポートが見込まれることを期待してAngularソースと相互参照しました-'hello world Ivy'の例でさえも/es6パスgithub.com/angular/angular/blob/master/integration/を示していますなぜそうしているのでしょうか?
Simon_Weaver


4

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

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

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

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


1
あなたは命の恩人です。それは私をひどく狂わせました。
DiederikEEn

4
の使用@babel/polyfillは非推奨です。
神経伝達物質

3

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

Angular 8.2.XXで私のために働く

IE11とEdgeでテスト済み


2

最終的に、polypath.jsという名前のファイルがprojectpath \ src \ 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エントリポイントにはほぼすべての機能が含まれています。また、あなたが書いたように、それは壊れたブラウザ実装を修正するために必要です。

(zloirockからの引用https://github.com/zloirock/core-js/issues/184

したがって、'core-js'をインポートすると思います大丈夫です


インポートするモジュールと名前空間の詳細については、core-jsの現在のドキュメントを確認してください。
カマフェザー

これを正解としてマークすることは可能ですか?これは特にほぼ1年後の方が正確だと思います。
doz87

1

@babel/preset-envand を使用する場合は、useBuiltInsオプションの横useBuiltInsに追加するだけでcorejs: 3、使用するバージョンを指定できますcorejs: 2。デフォルトはです。

presets: [
  [
    "@babel/preset-env", {
      "useBuiltIns": "usage",
      "corejs": 3
    }
  ]
],

詳細については、https//github.com/zloirock/core-js/blob/master/docs/2019-03-19-core-js-3-babel-and-a-look-into-the-futureを参照してください。.md#babelpreset-env


0

Polyfills.tsファイルに変更を加える

polyfills.tsとpolyfills.tsのすべての「es6」と「es7」を「es」に変更します

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.