Modül bulunamadı: Hata: 'core-js / es6' çözülemiyor


113

React uygulamamla ilgili olarak derleme sürecimle ilgili bir sorun yaşıyorum.

Her zaman şu hatayı alıyorum:

Modül bulunamadı: Hata: 'core-js / es6' çözülemiyor

bunu bir polyfill.js içinde kullanırsam:

ithal 'core-js / es6';

Bu benim package.json'um:

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

Burada biri yardım edebilir mi?


2
Yükseltme sürümünden sonra açısal uygulamada aynı hata. Düğüm modüllerinizde bu klasörün (core-js / es6) var olup olmadığını kontrol edin.
Kamil Naja

@KamilNaja Aynı sorunla karşı karşıyayım ve klasör (core-js / es6) node_modulesmde mevcut değil, node_modules'imde (core-js / es) var. Ne yapalım?
Kunal Tyagi

Yanıtlar:


155

Core-js sürüm 3.0.1 için içe aktarmalar değişti - örneğin

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

şimdi basitçe aşağıdaki şekilde sağlanabilir

import 'core-js/es/array';

Core-j'lerin tamamını getirmemeyi tercih ederseniz


18
açısal olarak 8'e geçtikten sonra hatayı alıyordum ancak çözümünüz düzeltildi.
Nakres

8
Açısal 8'e geçiş için çözüm budur :) teşekkür ederim
Kris Boyd

Kodumda ile başlayan hiçbir şey yok, bu import 'core-js/...yüzden neyi nerede değiştirmeliyim? VueJS 2 Kullanılması
hacim biri

@volumeone, terminalinizde 'npm i core-js'yi çalıştırın.
Shivam Shukla

1
@ShivamShukla teşekkürler ama çalışması için 2.6.11'e düşürmek zorunda kaldım. Mini-css-extract-plugin ile core-js 3 arasında bir hata var
cilt

99

Olası bir cevap buldum. Core-js sürüm 3.0'a sahipsiniz ve bu sürümün ES6 ve ES7 için ayrı klasörleri yok ; bu yüzden uygulama doğru yolları bulamıyor.

Bu hatayı çözmek için core-js sürümünü 2.5.7'ye düşürebilirsiniz . Bu sürüm, ayrı ES6 ve ES7 klasörleri ile doğru katalog yapısını üretir .

Sürümü düşürmek için şunu çalıştırın:

npm i -S core-js@2.5.7

Benim durumumda, Angular ile bu iyi çalışıyor.


1
Teşekkürler, bu en azından bir çözüm. Ayrıca sürüm 3.0'ı düşürmeden kullanmak için bir çözüm buldum.
Gönderi

Cidden hayat kurtarıcı. Teşekkür ederim.
IRCraziestTaxi

1
Eski sürüme geçmenin diğer her şeyi nasıl bozmadığını ve neden sadece yeni bir formata güncellemeyeceğinizi açıklayabilir misiniz? Bunun insanlar için iyi çalıştığını gösteren bir sürü olumlu oyunuz var, ancak kesinlikle bu iyi bir uzun vadeli çözüm değil.
Simon_Weaver

Bu nedenle, en yeni sürümü kullanmak için core-js kullandığınızda içe aktarmalarınızı yükseltmek mükemmel çözümler. Ne yazık ki, bu bağımlılık başka bir kitaplıkta kullanıldığında, bu çözüm imkansız olabilir ve geçici çözümü kullanmanız gerekir.
Kamil Naja

4
-1 Bu, mesajdan kurtulmak için bir yara bandıdır, paketlerinizi eski sürüme geçirmek iyi bir uygulama değildir. Okuyucular, ithalatlarını düzelterek çok daha iyi durumda. Daha basit olmasa da sadece bu kadar basit değil, çok daha iyi bir uygulama: stackoverflow.com/a/56186570/610573
Chris Baker

42

Polyfills.ts ve polyfills.ts dosyalarınızdaki tüm "es6" ve "es7" yi "es" olarak değiştirin (İsteğe bağlı).

  • Kimden: import 'core-js/es6/symbol';
  • Kime: import 'core-js/es/symbol';

21

Göç Ettiler Sonra etmek Angular8 , core-js/es6ya core-js/es7çalışmaz.

İçe aktarımı değiştirmeniz yeterlidir core-js/es/

Örn.

import 'core-js/es6/symbol'  

-e

import 'core-js/es/symbol'

Bu düzgün çalışacak.


Benim için Angular 8'de çalışıyor!
ihimv

Bu benim için işe yarıyor ama hala kafam çok karışık. Bu yeni tek içe aktarımı görmeyi umarak Angular kaynakla çapraz referans aldım - ve hatta "merhaba dünya Ivy" örneği bile hala /es6yolları gösteriyor github.com/angular/angular/blob/master/integration/… Bunu neden yaptıkları hakkında bir fikriniz var mı?
Simon_Weaver


4

Elbette, benzer bir sorun yaşadım ve basit bir

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

benim için hile yaptı.

Bununla birlikte, @ babel / polyfill kullanımı önerilmemektedir ( bu yoruma göre), bu nedenle bunu yalnızca daha eski paketlerin kurulu olduğunu düşünüyorsanız veya başka hiçbir şey başarısız olursa deneyin.


1
Dostum sen bir hayat kurtarıcısın. Beni çıldırttı.
DiederikEn

4
Kullanımından @babel/polyfillvazgeçildi.
Nörotransmitter

3

Proje yolu \ src \ polyfill.js içinde polyfill.js adlı bir dosyaya sahip olmak için sonlandırıldı. Bu dosya yalnızca şu satırı içerir: import 'core-js'; bu çoklu doldurma sadece es-6'yı değil, aynı zamanda 3.0.0 sürümünden beri core-js'yi kullanmanın doğru yoludur.

Eklediğim polyfill.js böyle benim webpack dosya girişi özniteliği için:

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

Mükemmel çalışıyor.

Ayrıca burada biraz daha bilgi buldum: https://github.com/zloirock/core-js/issues/184

Kütüphane yazarı ( zloirock ) şunları iddia ediyor:

ES6, ES5'te eklenen hemen hemen tüm özelliklerin davranışını değiştirir, bu nedenle core-js / es6 giriş noktası neredeyse hepsini içerir. Ayrıca yazdığınız gibi, bozuk tarayıcı uygulamalarını düzeltmek için gereklidir.

( Zloirock'tan alıntı https://github.com/zloirock/core-js/issues/184 )

Bu yüzden 'core-js'yi içe aktarmayı düşünüyorum ; gayet iyi.


İçe aktarılacak modüller ve ad alanları hakkında ek bilgi için core-js'nin mevcut belgelerine bakın .
Kamafeather

Bunu doğru cevap olarak işaretlemek mümkün mü, özellikle neredeyse bir yıl sonra bunun daha doğru olduğunu düşünüyorum.
doz87

3

Tsconfig.json dosyanızda "target": "es2015" i "target": "es5" olarak değiştirin.

Benim için Angular 8.2.XX ile çalışın

IE11 ve Edge'de test edildi



Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.