Mam problem z procesem kompilacji w odniesieniu do mojej aplikacji React.
Zawsze otrzymuję następujący błąd:
Nie znaleziono modułu: Błąd: nie można rozwiązać „core-js / es6”
jeśli użyję tego w pliku polyfill.js:
import „core-js / es6”;
To jest mój 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"
}
}
Czy ktoś może tu pomóc?
npm
build
yarnpkg
package.json
Gutelaunetyp
źródło
źródło
Odpowiedzi:
Importy zmieniły się dla core-js w wersji 3.0.1 - na przykład
import 'core-js/es6/array';
iimport 'core-js/es7/array';
można teraz zapewnić po prostu przez następujące
import 'core-js/es/array';
jeśli wolisz nie wprowadzać całego core-js
źródło
import 'core-js/...
więc co mam zmienić i gdzie? Korzystanie z VueJS 2Znalazłem możliwą odpowiedź. Masz wersję 3.0 core-js , a ta wersja nie ma oddzielnych folderów dla ES6 i ES7 ; dlatego aplikacja nie może znaleźć poprawnych ścieżek.
Aby rozwiązać ten błąd, możesz obniżyć wersję core-js do 2.5.7. Ta wersja tworzy poprawną strukturę katalogów z oddzielnymi folderami ES6 i ES7 .
Aby obniżyć wersję, po prostu uruchom:
W moim przypadku z Angularem to działa dobrze.
źródło
Zmień wszystkie „es6” i „es7” na „es” w plikach polyfills.ts i polyfills.ts (opcjonalnie).
import 'core-js/es6/symbol';
import 'core-js/es/symbol';
źródło
Po migracji do Angular8 ,
core-js/es6
lubcore-js/es7
nie będzie działać.Musisz po prostu zastąpić import
core-js/es/
Na przykład.
do
To zadziała poprawnie.
źródło
/es6
ścieżki github.com/angular/angular/blob/master/integration/… Jakieś pomysły, dlaczego to robią?Jasne, miałem podobny problem i prosty
załatwił sprawę dla mnie.
Jednak użycie @ babel / polyfill jest przestarzałe (zgodnie z tym komentarzem ), więc spróbuj tego tylko wtedy, gdy myślisz, że masz zainstalowane starsze pakiety lub jeśli wszystko inne zawiedzie.
źródło
@babel/polyfill
jest przestarzałe.Skończyło się na tym, że plik o nazwie polyfill.js był w ścieżce projektu \ src \ polyfill.js Ten plik zawiera tylko tę linię: import 'core-js'; to polyfill nie tylko es-6, ale jest poprawnym sposobem używania core-js od wersji 3.0.0.
Dodałem polyfill.js do mojego atrybutu wpisu pliku webpack w następujący sposób:
entry: ['./src/main.scss', './src/polyfill.js', './src/main.jsx']
Działa świetnie.
Znalazłem też więcej informacji tutaj: https://github.com/zloirock/core-js/issues/184
Autor biblioteki ( zloirock ) twierdzi:
(Cytat https://github.com/zloirock/core-js/issues/184 ze zloirock)
Myślę więc, że importujemy „core-js”; jest w porządku.
źródło
Po prostu zmień „target”: „es2015” na „target”: „es5” w pliku tsconfig.json.
Pracuj dla mnie z Angular 8.2.XX
Testowane na IE11 i Edge
źródło
Jeśli używasz
@babel/preset-env
iuseBuiltIns
, po prostu musisz dodaćcorejs: 3
obok opcji useBuiltIns, aby określić, której wersji użyć, domyślnie jestcorejs: 2
.Więcej informacji można znaleźć na stronie : 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
źródło
Zmień wszystkie „es6” i „es7” na „es” w plikach polyfills.ts i polyfills.ts
źródło