Модуль не знайдено: Помилка: Не вдається вирішити 'core-js / es6'


112

У мене є проблема з моїм процесом збирання стосовно мого додатка React.

Я завжди отримую таку помилку:

Модуль не знайдено: Помилка: Не вдається вирішити 'core-js / es6'

якщо я використовую це в polyfill.js:

імпорт 'core-js / es6';

Це мій 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"
  }
}

Хтось може тут допомогти?


2
Така ж помилка в кутовому додатку після оновлення версії. Перевірте, чи існує ця папка (core-js / es6) у ваших вузлових модулях.
Kamil Naja

@KamilNaja Я зіткнувся з тією ж проблемою, і папка (core-js / es6) не існує в моїх node_modules, у мене (core-js / es) в моїх node_modules. Що робити?
Kunal Tiagi

Відповіді:


153

Імпорт змінився для Core-js версії 3.0.1 - наприклад

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

тепер можна надати лише наступне

import 'core-js/es/array';

якщо ви хочете не вносити цілий core-js


18
після переходу на кут до 8 я отримував помилку, але ваше рішення виправило її.
Накрес

8
Це рішення для міграції до кутових 8 :) дякую
Кріс Бойд

У мене в коді немає нічого, що починається з import 'core-js/...того, що я повинен змінити і де? Використання VueJS 2
том перший

@volumeone запустіть 'npm i core-js' у своєму терміналі.
Шивам Шукла

1
@ShivamShukla дякую, але мені довелося перейти до 2.6.11, щоб він працював. Існує помилка між mini-css-extra-plugin та core-js 3
том

98

Я знайшов можливу відповідь. У вас є версія core-js версії 3.0, і ця версія не має окремих папок для ES6 та ES7 ; тому програма не може знайти правильні шляхи.

Щоб усунути цю помилку, ви можете зменшити версію core-js до 2.5.7. Ця версія створює правильну структуру каталогів, з окремими папками ES6 та ES7 .

Щоб зменшити версію, просто запустіть:

npm i -S core-js@2.5.7

У моєму випадку з Angular це добре працює.


1
Дякую, щонайменше, це рішення. Я також знайшов рішення використовувати версію 3.0 без пониження версії. Опублікує
Gutelaunetyp

Життєзбереження, серйозно. Дякую.
IRCraziestTaxi

1
Чи можете ви пояснити, як пониження рівня не порушує все інше, і чому ви не просто оновлюєтесь до нового формату? У вас є тонна грошових коштів, що говорить про те, що це працює добре для людей, але, безумовно, це не дуже вдале довгострокове рішення.
Simon_Weaver

Отже, ідеальними рішеннями є оновлення вашого імпорту, коли ви використовуєте core-js для використання новітньої версії. На жаль, коли ця залежність використовується в іншій бібліотеці, це рішення може бути неможливим, і вам потрібно використовувати обхідний шлях.
Kamil Naja

4
-1 Це допомога, щоб позбутися від повідомлення, пониження ваших пакетів - не надто хороша практика, щоб потрапити на нього. Читачі набагато краще коригують свій імпорт. Мало того, що це так само просто, якщо не просто, це набагато краща практика: stackoverflow.com/a/56186570/610573
Кріс Бейкер

42

Змініть усі "es6" та "es7" на "es" у своїх polyfills.ts та polyfills.ts (необов'язково).

  • Від: import 'core-js/es6/symbol';
  • До: import 'core-js/es/symbol';

21

Після того, як мігрував в Angular8 , core-js/es6або core-js/es7не працюватиме.

Вам потрібно просто замінити імпорт core-js/es/

Для екс.

import 'core-js/es6/symbol'  

до

import 'core-js/es/symbol'

Це буде працювати належним чином.


Для мене працює в кутовій 8!
ihimv

Це працює для мене, але я все ще супер розгублений. Я посилаюся на джерело Angular, очікуючи побачити цей новий імпорт - і навіть приклад "привіт світу Ivy" все ще показує /es6шляхи github.com/angular/angular/blob/master/integration/… Будь-яка ідея, чому вони роблять це?
Simon_Weaver


4

Звичайно, у мене було подібне питання і просте

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

зробив трюк для мене.

Однак використання @ babel / polyfill застаріле (відповідно до цього коментаря ), тому спробуйте це лише у тому випадку, якщо ви вважаєте, що у вас встановлені старіші пакети або якщо все інше не вдається.


1
Чувак, ти рятівник життя. Це мене змусило виламати горіхи.
DiederikEEn

4
Використання @babel/polyfillпризупинено.
Нейромедіатор

3

Просто змініть "target": "es2015" на "target": "es5" у своєму tsconfig.json.

Робота для мене з кутовим 8.2.XX

Тестували на IE11 та Edge


2

У проекті pathpath \ src \ polyfill.js файл має ім'я polyfill.js. Цей файл містить лише цей рядок: import 'core-js'; цей поліфіл не тільки es-6, але є правильним способом використання core-js з версії 3.0.0.

Я додав polyfill.js до свого атрибута введення файлу webpack-файл таким чином:

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

Працює чудово.

Тут я також знайшов додаткову інформацію: https://github.com/zloirock/core-js/isissue/184

Автор бібліотеки ( злоїрок ) стверджує:

ES6 змінює поведінку майже всіх функцій, доданих у ES5, тому точка входу core-js / es6 включає майже всі вони. Крім того, як ви писали, це потрібно для виправлення зламаних реалізацій браузера.

(Цитата https://github.com/zloirock/core-js/isissue/184 від zloirock)

Тому я думаю, що імпортуємо 'core-js'; просто чудово.


Щоб отримати додаткову інформацію про модулі та простори імен для імпорту, перегляньте поточну документацію core-js .
Камафезер

Чи можна відзначити це правильною відповіддю, я вважаю, що це більш точно, особливо майже через рік.
doz87

1

Якщо ви використовуєте @babel/preset-envта useBuiltIns, то вам просто потрібно додати corejs: 3поруч із параметром useBuiltIns, щоб вказати, яку версію використовувати, за замовчуванням corejs: 2.

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

Докладніші відомості див: 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


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.