Không tìm thấy mô-đun: Lỗi: Không thể giải quyết 'core-js / es6'


112

Tôi gặp sự cố với quy trình xây dựng liên quan đến ứng dụng React của mình.

Tôi luôn gặp lỗi sau:

Không tìm thấy mô-đun: Lỗi: Không thể giải quyết 'core-js / es6'

nếu tôi sử dụng điều này trong polyfill.js:

nhập 'core-js / es6';

Đó là gói của tôi.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"
  }
}

Ai đó có thể giúp đỡ ở đây?


2
Lỗi tương tự trong ứng dụng góc sau khi nâng cấp phiên bản. Kiểm tra xem thư mục này (core-js / es6) có tồn tại trong mô-đun nút của bạn không.
Kamil Naja

@KamilNaja Tôi đang gặp phải vấn đề tương tự và thư mục (core-js / es6) không tồn tại trong node_modules của tôi, tôi có (core-js / es) trong node_modules của mình. Để làm gì?
Kunal Tyagi

Câu trả lời:


153

Việc nhập khẩu đã thay đổi đối với phiên bản 3.0.1 của core-js - ví dụ:

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

bây giờ có thể được cung cấp đơn giản bằng cách sau

import 'core-js/es/array';

nếu bạn không muốn mang toàn bộ lõi-js


18
sau khi chuyển góc sang 8, tôi đã gặp lỗi nhưng giải pháp của bạn đã khắc phục được lỗi đó.
Nakres

8
Đây là giải pháp cho chuyển đổi sang góc 8 :) cảm ơn bạn
Kris Boyd

Tôi không có gì trong mã của mình bắt đầu bằng import 'core-js/...cái gì vậy tôi nên thay đổi cái gì và ở đâu? Sử dụng VueJS 2
tập một

@volumeone chạy 'npm i core-js' trong thiết bị đầu cuối của bạn.
Shivam Shukla

1
@ShivamShukla cảm ơn nhưng tôi phải hạ cấp xuống 2.6.11 để nó hoạt động. Có một lỗi giữa mini-css-extract-plugin và core-js 3
tập một

98

Tôi tìm thấy câu trả lời khả thi. Bạn có phiên bản core-js 3.0 và phiên bản này không có các thư mục riêng cho ES6ES7 ; đó là lý do tại sao ứng dụng không thể tìm thấy đường dẫn chính xác.

Để giải quyết lỗi này, bạn có thể hạ cấp phiên bản core-js xuống 2.5.7. Phiên bản này tạo ra cấu trúc danh mục chính xác, với các thư mục ES6ES7 riêng biệt .

Để hạ cấp phiên bản, chỉ cần chạy:

npm i -S core-js@2.5.7

Trong trường hợp của tôi, với Angular, điều này hoạt động tốt.


1
Cảm ơn, đó là một giải pháp ít nhất. Tôi cũng đã tìm thấy giải pháp để sử dụng phiên bản 3.0 mà không cần hạ cấp. Sẽ đăng
Gutelaunetyp Ngày

Tiết kiệm cuộc sống, nghiêm túc. Cảm ơn bạn.
IRCrazestTaxi

1
Bạn có thể giải thích cách hạ cấp không phá vỡ mọi thứ khác và tại sao bạn không cập nhật định dạng mới? Bạn có rất nhiều phiếu ủng hộ cho thấy điều này đang hoạt động tốt đối với mọi người nhưng chắc chắn đây không phải là giải pháp tốt về lâu dài.
Simon_Weaver

Vì vậy, giải pháp hoàn hảo là nâng cấp các mục nhập của bạn bất cứ khi nào bạn sử dụng core-js để sử dụng phiên bản mới nhất. Thật không may, khi sự phụ thuộc này được sử dụng trong thư viện khác, giải pháp này có thể không thực hiện được và bạn cần sử dụng giải pháp thay thế.
Kamil Naja

4
-1 Đây là một biện pháp hỗ trợ ban nhạc để loại bỏ thông báo, hạ cấp các gói của bạn không phải là một phương pháp hay. Người đọc sẽ tốt hơn nhiều với việc sửa chữa nhập khẩu của họ. Không chỉ là nó chỉ đơn giản nếu không muốn nói đơn giản hơn, đó là thực hành tốt hơn nhiều: stackoverflow.com/a/56186570/610573
Chris Baker

42

Thay đổi tất cả "es6" và "es7" thành "es" trong polyfills.ts và polyfills.ts của bạn (Tùy chọn).

  • Từ: import 'core-js/es6/symbol';
  • Đến: import 'core-js/es/symbol';

21

Sau khi di chuyển sang Angular8 , core-js/es6hoặccore-js/es7 sẽ không làm việc.

Bạn chỉ cần thay thế nhập core-js/es/

Đối với người yêu cũ.

import 'core-js/es6/symbol'  

đến

import 'core-js/es/symbol'

Điều này sẽ hoạt động bình thường.


Hoạt động cho tôi trong Angular 8!
ihimv

Điều này làm việc cho tôi nhưng tôi vẫn còn siêu bối rối. Tôi đã tham khảo chéo với nguồn Angular mong muốn thấy lần nhập đơn mới hơn này - và ngay cả ví dụ 'hello world Ivy' vẫn hiển thị /es6các đường dẫn github.com/angular/angular/blob/master/integration/… Bạn có biết tại sao họ lại làm như vậy không?
Simon_Weaver

Thông tin chi tiết về vấn đề: github.com/angular/angular/issues/32228
Constantin Konstantinidis

4

Chắc chắn, tôi đã gặp sự cố tương tự và đơn giản

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

đã làm thủ thuật cho tôi.

Tuy nhiên, việc sử dụng @ babel / polyfill không được dùng nữa (theo nhận xét này ) vì vậy chỉ nên thử điều này nếu bạn cho rằng mình đã cài đặt các gói cũ hơn hoặc nếu vẫn thất bại.


1
Bạn là một người tiết kiệm cuộc sống. Nó khiến tôi phát điên lên.
DiederikEEn

4
Việc sử dụng @babel/polyfillkhông được dùng nữa.
Neurotransmitter,

3

Chỉ cần thay đổi "target": "es2015" thành "target": "es5" trong tsconfig.json của bạn.

Làm việc cho tôi với Angular 8.2.XX

Đã thử nghiệm trên IE11 và Edge


2

Đã kết thúc để có một tệp có tên polyfill.js trong projectpath \ src \ polyfill.js Tệp đó chỉ chứa dòng này: import 'core-js';polyfills này không chỉ có es-6, mà còn là cách chính xác để sử dụng core-js kể từ phiên bản 3.0.0.

Tôi đã thêm polyfill.js vào thuộc tính mục nhập tệp webpack của mình như sau:

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

Hoạt động hoàn hảo.

Tôi cũng tìm thấy thêm một số thông tin ở đây: https://github.com/zloirock/core-js/issues/184

Tác giả thư viện ( zloirock ) tuyên bố:

ES6 thay đổi hành vi hầu như tất cả các tính năng được thêm vào trong ES5, do đó, điểm vào core-js / es6 bao gồm hầu hết tất cả chúng. Ngoài ra, như bạn đã viết, nó cần thiết để sửa các triển khai trình duyệt bị hỏng.

(Bảng báo giá https://github.com/zloirock/core-js/issues/184 từ zloirock)

Vì vậy, tôi nghĩ rằng nhập 'core-js'; là tốt.


Để biết thêm thông tin về mô-đun và không gian tên cần nhập, hãy kiểm tra tài liệu hiện tại của core-js .
Kamafeather

Có thể đánh dấu đây là câu trả lời chính xác, tôi nghĩ rằng điều này chính xác hơn đặc biệt là gần một năm sau đó.
doz87


0

Thực hiện thay đổi đối với tệp Polyfills.ts của bạn

Thay đổi tất cả "es6" và "es7" thành "es" trong polyfills.ts và polyfills.ts của bạn

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.