Modul tidak ditemukan: Kesalahan: Tidak dapat menyelesaikan 'core-js / es6'

112

Saya punya masalah dengan proses build saya terkait dengan aplikasi React saya.

Saya selalu mendapatkan kesalahan berikut:

Modul tidak ditemukan: Kesalahan: Tidak dapat menyelesaikan 'core-js / es6'

jika saya menggunakan ini di polyfill.js:

impor 'core-js / es6';

Itu package.json saya:

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

Bisakah seseorang membantu di sini?

Gutelaunetyp
sumber
2
Kesalahan yang sama di aplikasi sudut setelah versi peningkatan. Periksa, apakah folder ini (core-js / es6) ada di modul-node Anda.
Kamil Naja
@KamilNaja Saya menghadapi masalah yang sama dan folder (core-js / es6) tidak ada di node_modules saya, saya memiliki (core-js / es) di node_modules saya. Apa yang harus dilakukan?
Kunal Tyagi

Jawaban:

154

Impor telah berubah untuk core-js versi 3.0.1 - misalnya

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

sekarang dapat disediakan hanya dengan berikut ini

import 'core-js/es/array';

jika Anda lebih suka untuk tidak memasukkan seluruh core-js

LeaveTheCapital
sumber
18
setelah bermigrasi sudut ke 8 saya mendapatkan kesalahan tetapi solusi Anda memperbaikinya.
Nakres
8
Ini adalah solusi untuk migrasi ke angular 8 :) terima kasih
Kris Boyd
Saya tidak memiliki apa pun dalam kode saya yang dimulai dengan import 'core-js/...jadi apa yang harus saya ubah dan di mana? Menggunakan VueJS 2
volume satu
@volumeone jalankan 'npm i core-js' di terminal Anda.
Shivam Shukla
1
@ShivamShukla terima kasih, tetapi saya harus menurunkan versi ke 2.6.11 agar berfungsi. Ada bug antara mini-css-extract-plugin dan core-js 3
volume satu
98

Saya menemukan jawaban yang mungkin. Anda memiliki core-js versi 3.0, dan versi ini tidak memiliki folder terpisah untuk ES6 dan ES7 ; itulah mengapa aplikasi tidak dapat menemukan jalur yang benar.

Untuk mengatasi kesalahan ini, Anda dapat menurunkan versi core-js ke 2.5.7. Versi ini menghasilkan struktur katalog yang benar, dengan folder ES6 dan ES7 terpisah .

Untuk menurunkan versi, cukup jalankan:

npm i -S [email protected]

Dalam kasus saya, dengan Angular, ini berfungsi dengan baik.

Kamil Naja
sumber
1
Terima kasih, setidaknya itu adalah solusi. Saya juga menemukan solusi untuk menggunakan versi 3.0 tanpa menurunkan versi. Akan memposting
Gutelaunetyp
Penyelamat hidup, serius. Terima kasih.
IRCraziestTaxi
1
Dapatkah Anda menjelaskan bagaimana penurunan versi tidak merusak yang lainnya dan mengapa Anda tidak memperbarui ke format baru saja? Anda mendapat banyak suara positif yang menunjukkan bahwa ini berfungsi dengan baik untuk orang-orang, tetapi tentunya ini bukan solusi jangka panjang yang baik.
Simon_Weaver
Jadi, solusi sempurna adalah meningkatkan impor Anda setiap kali Anda menggunakan core-j untuk menggunakan versi terbaru. Sayangnya, ketika ketergantungan ini digunakan di pustaka lain, solusi ini tidak mungkin dilakukan dan Anda perlu menggunakan solusi.
Kamil Naja
4
-1 Ini adalah bantuan band untuk menghilangkan pesan, menurunkan paket Anda bukanlah praktik yang baik untuk dilakukan. Pembaca jauh lebih baik dengan mengoreksi impor mereka. Tidak hanya sesederhana atau lebih sederhana, ini juga merupakan praktik yang jauh lebih baik: stackoverflow.com/a/56186570/610573
Chris Baker
42

Ubah semua "es6" dan "es7" menjadi "es" di polyfills.ts dan polyfills.ts Anda (Opsional).

  • Dari: import 'core-js/es6/symbol';
  • Untuk: import 'core-js/es/symbol';
Koyuchha
sumber
21

Setelah Bermigrasi ke Angular8 , core-js/es6atau core-js/es7Tidak akan berfungsi.

Anda hanya perlu mengganti impor core-js/es/

Misalnya.

import 'core-js/es6/symbol'  

untuk

import 'core-js/es/symbol'

Ini akan bekerja dengan baik.

Bhadresh Patel
sumber
Bekerja untuk saya di Angular 8!
ihimv
Ini berhasil untuk saya tetapi saya masih sangat bingung. Saya mereferensikan silang dengan sumber Angular berharap untuk melihat impor tunggal yang lebih baru ini - dan bahkan contoh 'hello world Ivy' masih menunjukkan /es6jalur github.com/angular/angular/blob/master/integration/… Ada ide mengapa mereka melakukan itu?
Simon_Weaver
Detail selengkapnya dalam masalah: github.com/angular/angular/issues/32228
Constantin Konstantinidis
4

Tentu, saya memiliki masalah serupa dan sederhana

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

melakukan trik untuk saya.

Namun, penggunaan @ babel / polyfill sudah tidak digunakan lagi (menurut komentar ini ) jadi hanya coba ini jika Anda merasa telah menginstal paket yang lebih lama atau jika semuanya gagal.

otech47
sumber
1
Bung, Anda adalah penyelamat hidup. Itu membuatku gila.
DiederikEn
4
Penggunaan dari @babel/polyfillsudah tidak digunakan lagi.
Neurotransmitter
3

Ubah saja "target": "es2015" menjadi "target": "es5" di tsconfig.json Anda.

Bekerja untuk saya dengan Angular 8.2.XX

Diuji di IE11 dan Edge

jspassov
sumber
2

Akhirnya memiliki file bernama polyfill.js di projectpath \ src \ polyfill.js File itu hanya berisi baris ini: import 'core-js'; polyfills ini tidak hanya es-6, tetapi merupakan cara yang benar untuk menggunakan core-js sejak versi 3.0.0.

Saya menambahkan polyfill.js ke atribut entri file webpack seperti ini:

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

Bekerja dengan sempurna.

Saya juga menemukan beberapa informasi lebih lanjut di sini: https://github.com/zloirock/core-js/issues/184

Penulis perpustakaan ( zloirock ) mengklaim:

ES6 mengubah perilaku hampir semua fitur yang ditambahkan di ES5, jadi titik masuk core-js / es6 mencakup hampir semuanya. Selain itu, seperti yang Anda tulis, ini diperlukan untuk memperbaiki implementasi browser yang rusak.

(Kutipan https://github.com/zloirock/core-js/issues/184 dari zloirock)

Jadi saya pikir import 'core-js'; baik-baik saja.

Gutelaunetyp
sumber
Untuk info tambahan tentang modul & ruang nama yang akan diimpor, periksa dokumentasi core-js saat ini .
Kamafeather
Mungkinkah menandai ini sebagai jawaban yang benar, saya pikir ini lebih akurat terutama hampir setahun kemudian.
doz87
1

Jika Anda menggunakan @babel/preset-envdan useBuiltIns, maka Anda hanya perlu menambahkan corejs: 3di samping opsi useBuiltIns, untuk menentukan versi mana yang akan digunakan, defaultnya adalah corejs: 2.

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

Untuk detail lebih lanjut lihat: 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

RiZKiT
sumber
0

Lakukan perubahan pada file Polyfills.ts Anda

Ubah semua "es6" dan "es7" menjadi "es" di polyfills.ts dan polyfills.ts Anda

Ayah-Kerajaan
sumber