Módulo no encontrado: Error: No se puede resolver 'core-js / es6'

112

Tengo un problema con mi proceso de compilación en relación con mi aplicación React.

Siempre obtengo el siguiente error:

Módulo no encontrado: Error: No se puede resolver 'core-js / es6'

si uso esto en un polyfill.js:

importar 'core-js / es6';

Ese es mi 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"
  }
}

¿Alguien puede ayudar aquí?

Gutelaunetyp
fuente
2
El mismo error en la aplicación angular después de la versión de actualización. Compruebe si esta carpeta (core-js / es6) existe en su nodo-módulos.
Kamil Naja
@KamilNaja Estoy enfrentando el mismo problema y la carpeta (core-js / es6) no existe en mis node_modules, tengo (core-js / es) en mis node_modules. ¿Qué hacer?
Kunal Tyagi

Respuestas:

153

Las importaciones han cambiado para core-js versión 3.0.1, por ejemplo

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

ahora se puede proporcionar simplemente con lo siguiente

import 'core-js/es/array';

si prefiere no traer la totalidad de core-js

LeaveTheCapital
fuente
18
después de migrar angular a 8, recibí el error, pero su solución lo solucionó.
Nakres
8
Esta es la solución para la migración a angular 8 :) gracias
Kris Boyd
No tengo nada en mi código que comience con, import 'core-js/...entonces, ¿qué debo cambiar y dónde? Usando VueJS 2
volumen uno
@volumeone ejecuta 'npm i core-js' en su terminal.
Shivam Shukla
1
@ShivamShukla gracias pero tuve que degradar a 2.6.11 para que funcione. Hay un error entre mini-css-extract-plugin y core-js 3
volumen uno
98

Encontré una posible respuesta. Tiene core-js versión 3.0 y esta versión no tiene carpetas separadas para ES6 y ES7 ; por eso la aplicación no puede encontrar las rutas correctas.

Para resolver este error, puede degradar la versión core-js a 2.5.7. Esta versión produce una estructura de catálogos correcta, con carpetas ES6 y ES7 separadas .

Para degradar la versión, simplemente ejecute:

npm i -S [email protected]

En mi caso, con Angular, esto funciona bien.

Kamil Naja
fuente
1
Gracias, al menos esa es una solución. También encontré la solución para usar la versión 3.0 sin degradar. Publicará
Gutelaunetyp
Salvavidas, en serio. Gracias.
IRCraziestTaxi
1
¿Puede explicar cómo la degradación no rompe todo lo demás y por qué no simplemente actualizar a un nuevo formato? Tienes una tonelada de votos positivos que sugieren que esto está funcionando bien para las personas, pero seguramente esta no es una buena solución a largo plazo.
Simon_Weaver
Entonces, la solución perfecta es actualizar sus importaciones cada vez que use core-js para usar la versión más reciente. Desafortunadamente, cuando esta dependencia se usa en otra biblioteca, esta solución puede ser imposible y necesita usar una solución alternativa.
Kamil Naja
4
-1 Esta es una curita para deshacerse del mensaje, degradar sus paquetes no es una buena práctica para entrar. Los lectores están mucho mejor si corrigen sus importaciones. No solo es tan simple si no más simple, es una práctica mucho mejor: stackoverflow.com/a/56186570/610573
Chris Baker
42

Cambie todo "es6" y "es7" por "es" en su polyfills.ts y polyfills.ts (opcional).

  • De: import 'core-js/es6/symbol';
  • A: import 'core-js/es/symbol';
Koyuchha
fuente
21

Después de migrar a Angular8 , core-js/es6o core-js/es7no funcionará.

Simplemente tiene que reemplazar la importación core-js/es/

Por ej.

import 'core-js/es6/symbol'  

a

import 'core-js/es/symbol'

Esto funcionará correctamente.

Bhadresh Patel
fuente
¡Funciona para mí en Angular 8!
ihimv
Esto funciona para mí, pero todavía estoy muy confundido. Hice una referencia cruzada con la fuente Angular esperando ver esta nueva importación única, e incluso el ejemplo de 'hello world Ivy' todavía muestra /es6rutas github.com/angular/angular/blob/master/integration/ ... ¿ Alguna idea de por qué están haciendo eso?
Simon_Weaver
Más detalles en cuestión: github.com/angular/angular/issues/32228
Constantin Konstantinidis
4

Claro, tuve un problema similar y un simple

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

hizo el truco para mí.

Sin embargo, el uso de @ babel / polyfill está en desuso (según este comentario ), así que solo intente esto si cree que tiene instalados paquetes más antiguos o si todo lo demás falla.

otech47
fuente
1
Amigo, eres un salvavidas. Me volvía loca.
DiederikEEn
4
El uso de @babel/polyfillestá obsoleto.
Neurotransmisor
3

Simplemente cambie "target": "es2015" a "target": "es5" en su tsconfig.json.

Trabaja para mí con Angular 8.2.XX

Probado en IE11 y Edge

jspassov
fuente
2

Terminó para tener un archivo llamado polyfill.js en projectpath \ src \ polyfill.js Ese archivo solo contiene esta línea: import 'core-js'; este polyfills no solo es-6, sino que es la forma correcta de usar core-js desde la versión 3.0.0.

He añadido las polyfill.js a mi webpack-archivo de atributos entrada como esta:

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

Funciona perfectamente.

También encontré más información aquí: https://github.com/zloirock/core-js/issues/184

El autor de la biblioteca ( zloirock ) afirma:

ES6 cambia el comportamiento de casi todas las funciones agregadas en ES5, por lo que el punto de entrada core-js / es6 las incluye casi todas. Además, como escribió, es necesario para reparar implementaciones de navegador dañadas.

(Cita https://github.com/zloirock/core-js/issues/184 de zloirock)

Así que creo que importa 'core-js'; está bien.

Gutelaunetyp
fuente
Para obtener información adicional sobre módulos y espacios de nombres para importar, consulte la documentación actual de core-js .
Kamafeather
¿Es posible marcar esto como la respuesta correcta? Creo que esto es más preciso, especialmente casi un año después.
doz87
0

Realice cambios en su archivo Polyfills.ts

Cambie todo "es6" y "es7" por "es" en su polyfills.ts y polyfills.ts

Padre-Imperio
fuente