Модуль не найден: ошибка: не удается разрешить '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'; это просто хорошо.