Modul nicht gefunden: Fehler: 'core-js / es6' kann nicht aufgelöst werden

111

Ich habe ein Problem mit meinem Erstellungsprozess in Bezug auf meine React-App.

Ich erhalte immer den folgenden Fehler:

Modul nicht gefunden: Fehler: 'core-js / es6' kann nicht aufgelöst werden

wenn ich dies in einer polyfill.js verwende:

'core-js / es6' importieren;

Das ist mein 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"
  }
}

Kann hier jemand helfen?

Gutelaunetyp
quelle
2
Der gleiche Fehler in der eckigen App nach der Upgrade-Version. Überprüfen Sie, ob dieser Ordner (core-js / es6) in Ihren Knotenmodulen vorhanden ist.
Kamil Naja
@KamilNaja Ich habe das gleiche Problem und der Ordner (core-js / es6) existiert nicht in meinen node_modules, ich habe (core-js / es) in meinen node_modules. Was ist zu tun?
Kunal Tyagi

Antworten:

153

Die Importe haben sich beispielsweise für core-js Version 3.0.1 geändert

import 'core-js/es6/array'; und import 'core-js/es7/array';

kann nun einfach durch folgendes bereitgestellt werden

import 'core-js/es/array';

wenn Sie es vorziehen würden, nicht alle Core-Js einzubringen

LeaveTheCapital
quelle
18
Nach der Migration von Winkel auf 8 wurde der Fehler angezeigt, aber Ihre Lösung hat ihn behoben.
Nakres
8
Dies ist die Lösung für die Migration auf Winkel 8 :) Danke
Kris Boyd
Ich habe nichts in meinem Code, import 'core-js/...was damit beginnt. Was soll ich also wo ändern? Verwenden von VueJS 2
Band 1
@volumeone führen Sie 'npm i core-js' in Ihrem Terminal aus.
Shivam Shukla
1
@ShivamShukla danke, aber ich musste auf 2.6.11 downgraden, damit es funktioniert. Es gibt einen Fehler zwischen dem Mini-CSS-Extrakt-Plugin und Core-JS 3
Band 1
95

Ich habe eine mögliche Antwort gefunden. Sie haben Core-JS- Version 3.0, und diese Version verfügt nicht über separate Ordner für ES6 und ES7 . Aus diesem Grund kann die Anwendung keine korrekten Pfade finden.

Um diesen Fehler zu beheben, können Sie die core-js- Version auf 2.5.7 herunterstufen . Diese Version produziert korrekte Kataloge Struktur mit getrennten ES6 und ES7 Ordner.

Um die Version herunterzustufen, führen Sie einfach Folgendes aus:

npm i -S [email protected]

In meinem Fall funktioniert dies mit Angular in Ordnung.

Kamil Naja
quelle
1
Danke, das ist zumindest eine Lösung. Ich habe auch die Lösung gefunden, Version 3.0 ohne Downgrade zu verwenden. Wird posten
Gutelaunetyp
Lebensretter, im Ernst. Danke dir.
IRCraziestTaxi
1
Können Sie erklären, wie ein Downgrade nicht alles andere kaputt macht und warum Sie nicht einfach auf ein neues Format aktualisieren würden? Sie haben eine Tonne Upvotes, was darauf hindeutet, dass dies für Menschen gut funktioniert, aber dies ist sicherlich keine gute langfristige Lösung.
Simon_Weaver
Eine perfekte Lösung besteht also darin, Ihre Importe zu aktualisieren, wenn Sie Core-Js verwenden, um die neueste Version zu verwenden. Wenn diese Abhängigkeit in einer anderen Bibliothek verwendet wird, kann diese Lösung leider unmöglich sein und Sie müssen eine Problemumgehung verwenden.
Kamil Naja
4
-1 Dies ist ein Pflaster, um die Nachricht loszuwerden. Ein Downgrade Ihrer Pakete ist keine gute Vorgehensweise. Leser sind viel besser dran, wenn sie ihre Importe korrigieren. Es ist nicht nur genauso einfach, wenn nicht einfacher, es ist auch eine weitaus bessere Praxis: stackoverflow.com/a/56186570/610573
Chris Baker
42

Ändern Sie alle "es6" und "es7" in "es" in Ihren polyfills.ts und polyfills.ts (optional).

  • Von: import 'core-js/es6/symbol';
  • Zu: import 'core-js/es/symbol';
Koyuchha
quelle
21

Nach migrierenden Angular8 , core-js/es6oder core-js/es7nicht funktionieren.

Sie müssen einfach den Import ersetzen core-js/es/

Zum Beispiel.

import 'core-js/es6/symbol'  

zu

import 'core-js/es/symbol'

Dies wird ordnungsgemäß funktionieren.

Bhadresh Patel
quelle
Funktioniert für mich in Angular 8!
Ihimv
Das funktioniert bei mir, aber ich bin immer noch super verwirrt. Ich habe einen Querverweis mit Angular-Quelle erstellt, in der Erwartung, diesen neueren Einzelimport zu sehen - und selbst das Beispiel "Hallo Welt-Efeu" zeigt immer noch /es6Pfade. Github.com/angular/angular/blob/master/integration/… Irgendeine Idee, warum sie das tun?
Simon_Weaver
Weitere Details in Ausgabe: github.com/angular/angular/issues/32228
Constantin Konstantinidis
4

Klar, ich hatte ein ähnliches Problem und ein einfaches

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

hat den Trick für mich gemacht.

Die Verwendung von @ babel / polyfill ist jedoch veraltet (laut diesem Kommentar ). Versuchen Sie dies daher nur, wenn Sie der Meinung sind, dass ältere Pakete installiert sind oder wenn alles andere fehlschlägt.

otech47
quelle
1
Alter, du bist ein Lebensretter. Es hat mich verrückt gemacht.
DiederikEEn
4
Die Verwendung von @babel/polyfillist veraltet.
Neurotransmitter
3

Ändern Sie einfach "target": "es2015" in "target": "es5" in Ihrer tsconfig.json.

Arbeite für mich mit Angular 8.2.XX

Getestet auf IE11 und Edge

jspassov
quelle
2

Es wurde eine Datei mit dem Namen polyfill.js im Projektpfad \ src \ polyfill.js erstellt. Diese Datei enthält nur die folgende Zeile: import 'core-js'; Diese Polyfüllung füllt nicht nur es-6, sondern ist auch die richtige Art, Core-js seit Version 3.0.0 zu verwenden.

Ich fügte hinzu , die polyfill.js meiner webpack-Dateieintrag Attribut wie folgt aus :

entry: ['./src/main.scss', './src/polyfill.js', './src/main.jsx']

Funktioniert perfekt.

Ich habe hier auch weitere Informationen gefunden: https://github.com/zloirock/core-js/issues/184

Der Bibliotheksautor ( zloirock ) behauptet:

ES6 ändert das Verhalten fast aller in ES5 hinzugefügten Funktionen, sodass der Einstiegspunkt von core-js / es6 fast alle umfasst. Wie Sie geschrieben haben, ist dies auch erforderlich, um fehlerhafte Browser-Implementierungen zu beheben.

(Zitat https://github.com/zloirock/core-js/issues/184 von zloirock)

Ich denke also, importiere 'core-js'; ist in Ordnung.

Gutelaunetyp
quelle
Weitere Informationen zu zu importierenden Modulen und Namespaces finden Sie in der aktuellen Dokumentation zu core-js .
Kamafeather
Ist es möglich, dies als die richtige Antwort zu markieren, denke ich, dass dies besonders fast ein Jahr später genauer ist.
doz87
0

Nehmen Sie Änderungen an Ihrer Polyfills.ts-Datei vor

Ändern Sie alle "es6" und "es7" in "es" in Ihren polyfills.ts und polyfills.ts

Vaterreich
quelle