Модуль не найден: ошибка: не удается разрешить 'core-js/es6'

У меня проблема с процессом сборки по отношению к моему приложению 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"
  }
}

Ответы

Ответ 1

Я нашел возможный ответ. У вас есть core-js версии 3.0, и в этой версии нет отдельных папок для ES6 и ES7; Вот почему приложение не может найти правильные пути.

Чтобы устранить эту ошибку, вы можете понизить версию core-js до 2.5.7. Эта версия создает правильную структуру каталогов с отдельными папками ES6 и ES7.

Чтобы понизить версию, просто запустите:

npm i -S [email protected]

В моем случае с Angular это работает нормально.

Ответ 2

Импортированы изменения для core-js версии 3.0.1 - например

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

теперь может быть обеспечено просто следующим

import 'core-js/es/array';

если вы предпочитаете не вводить весь Core-JS

Ответ 3

Измените все "es6" и "es7" на "es" в ваших polyfills.ts и polyfills.ts (необязательно).

  • От: import 'core-js/es6/symbol';
  • Кому: import 'core-js/es/symbol';

Ответ 4

После перехода на Angular 8 'core-js/es6' или 'core-js/es7' не будут работать.

Вы должны просто заменить импорт 'core-js/es/'

Например импортировать 'core-js/es6/symbol' для импорта 'core-js/es/symbol'

Это будет работать правильно.

Ответ 5

Конечно, у меня была похожая проблема и простой

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

помогло.

Ответ 6

Завершено, чтобы иметь файл с именем polyfill.js в projectpath \ src\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/issues/184

Автор библиотеки (zloirock) утверждает:

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

(Цитата https://github.com/zloirock/core-js/issues/184 от zloirock)

Так что я думаю, импорт 'core-js'; это просто хорошо.