Modulo non trovato: errore: impossibile risolvere "core-js / es6"


112

Ho un problema con il mio processo di costruzione in relazione alla mia app React.

Ottengo sempre il seguente errore:

Modulo non trovato: errore: impossibile risolvere "core-js / es6"

se lo uso in un polyfill.js:

importa "core-js / es6";

Questo è il mio 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"
  }
}

Qualcuno può aiutare qui?


2
Lo stesso errore nell'app angolare dopo la versione di aggiornamento. Controlla se questa cartella (core-js / es6) esiste nel tuo node-modules.
Kamil Naja

@KamilNaja Sto affrontando lo stesso problema e la cartella (core-js / es6) non esiste nel mio node_modules, ho (core-js / es) nel mio node_modules. Cosa fare?
Kunal Tyagi,

Risposte:


153

Le importazioni sono cambiate per core-js versione 3.0.1, ad esempio

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

può ora essere fornito semplicemente come segue

import 'core-js/es/array';

se preferisci non inserire l'intero file core-js


18
dopo la migrazione angolare a 8 stavo ottenendo l'errore ma la tua soluzione lo ha risolto.
Nakres

8
Questa è la soluzione per la migrazione all'angular 8 :) grazie
Kris Boyd

Non ho nulla nel mio codice che inizi con, import 'core-js/...quindi cosa devo cambiare e dove? Utilizzando VueJS 2
volume uno

@volumeone esegue 'npm i core-js' nel tuo terminale.
Shivam Shukla,

1
@ShivamShukla grazie, ma ho dovuto eseguire il downgrade a 2.6.11 perché funzionasse. C'è un bug tra mini-css-extract-plugin e core-js 3
volume uno

98

Ho trovato una possibile risposta. Hai core-js versione 3.0 e questa versione non ha cartelle separate per ES6 ed ES7 ; ecco perché l'applicazione non riesce a trovare i percorsi corretti.

Per risolvere questo errore, puoi eseguire il downgrade della versione core-js alla 2.5.7. Questa versione produce una corretta struttura dei cataloghi, con cartelle ES6 ed ES7 separate .

Per eseguire il downgrade della versione, eseguire semplicemente:

npm i -S core-js@2.5.7

Nel mio caso, con Angular, funziona bene.


1
Grazie, almeno è una soluzione. Ho anche trovato la soluzione per utilizzare la versione 3.0 senza downgrade. Pubblicheremo
Gutelaunetyp

Risparmiatore di vita, sul serio. Grazie.
IRCraziestTaxi

1
Puoi spiegare come il downgrade non interrompe tutto il resto e perché non dovresti semplicemente aggiornare a un nuovo formato? Hai un sacco di voti positivi che suggeriscono che questo sta funzionando bene per le persone, ma sicuramente questa non è una buona soluzione a lungo termine.
Simon_Weaver

Quindi, la soluzione perfetta è aggiornare le tue importazioni ogni volta che usi core-js per usare la versione più recente. Sfortunatamente, quando questa dipendenza viene utilizzata in un'altra libreria, questa soluzione può essere impossibile e devi utilizzare una soluzione alternativa.
Kamil Naja

4
-1 Questo è un cerotto per sbarazzarsi del messaggio, il downgrade dei pacchetti non è una buona pratica per entrare. I lettori stanno molto meglio se correggono le loro importazioni. Non solo è altrettanto semplice se non più semplice, è di gran lunga migliore pratica: stackoverflow.com/a/56186570/610573
Chris Baker

42

Cambia tutti gli "es6" e "es7" in "es" nei tuoi polyfills.ts e polyfills.ts (Opzionale).

  • A partire dal: import 'core-js/es6/symbol';
  • Per: import 'core-js/es/symbol';

21

Dopo la migrazione ad Angular8 , core-js/es6o core-js/es7non funzionerà.

Devi semplicemente sostituire import core-js/es/

Per es.

import 'core-js/es6/symbol'  

per

import 'core-js/es/symbol'

Questo funzionerà correttamente.


Funziona per me in Angular 8!
ihimv

Questo funziona per me, ma sono ancora molto confuso. Ho incrociato i riferimenti con la fonte Angular aspettandomi di vedere questa singola importazione più recente - e anche l'esempio "ciao mondo Ivy" mostra ancora i /es6percorsi github.com/angular/angular/blob/master/integration/… Qualche idea del perché lo stanno facendo?
Simon_Weaver


4

Certo, ho avuto un problema simile e un semplice file

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

ha fatto il trucco per me.

Tuttavia, l'utilizzo di @ babel / polyfill è deprecato (in base a questo commento ) quindi provalo solo se pensi di aver installato pacchetti più vecchi o se tutto il resto fallisce.


1
Amico, sei un salvavita. Mi ha fatto impazzire.
DiederikEEn

4
L'utilizzo di @babel/polyfillè deprecato.
Neurotrasmettitore

3

Basta cambiare "target": "es2015" in "target": "es5" nel tuo tsconfig.json.

Lavora per me con Angular 8.2.XX

Testato su IE11 e Edge


2

Finì per avere un file chiamato polyfill.js in projectpath \ src \ polyfill.js Quel file contiene solo questa riga: import 'core-js'; questo polyfills non solo es-6, ma è il modo corretto di usare core-js dalla versione 3.0.0.

Ho aggiunto polyfill.js all'attributo di voce del mio file webpack in questo modo:

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

Funziona perfettamente.

Ho anche trovato qualche informazione in più qui: https://github.com/zloirock/core-js/issues/184

L'autore della biblioteca ( zloirock ) afferma:

ES6 cambia il comportamento di quasi tutte le funzionalità aggiunte in ES5, quindi il punto di ingresso core-js / es6 le include quasi tutte. Inoltre, come hai scritto, è necessario per correggere le implementazioni del browser danneggiate.

(Citazione https://github.com/zloirock/core-js/issues/184 da zloirock)

Quindi penso che import 'core-js'; va bene.


Per ulteriori informazioni su moduli e spazi dei nomi da importare, controlla la documentazione corrente di core-js .
Kamafeather

È possibile contrassegnare questa come la risposta corretta, penso che sia più accurata soprattutto quasi un anno dopo.
doz87


0

Apporta le modifiche al tuo file Polyfills.ts

Cambia tutti gli "es6" e "es7" in "es" nei tuoi polyfills.ts e polyfills.ts

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.