Gut*_*typ 64 build npm package.json yarnpkg
我的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"
}
}
Run Code Online (Sandbox Code Playgroud)
有人可以帮忙吗?
Lea*_*tal 93
对于core-js版本3.0.1的导入已更改-例如
import 'core-js/es6/array';
和
import 'core-js/es7/array';
现在可以通过以下方式简单地提供
import 'core-js/es/array';
如果您不希望引入整个core-js
Kam*_*aja 65
我找到了可能的答案。您有core-js版本3.0,此版本没有用于ES6和ES7的单独文件夹;这就是应用程序找不到正确路径的原因。
要解决此错误,您可以将core-js版本降级为2.5.7。此版本产生正确的目录结构,带有单独的ES6和ES7文件夹。
要降级版本,只需运行:
npm i -S core-js@2.5.7
Run Code Online (Sandbox Code Playgroud)
就我而言,使用Angular可以正常工作。
小智 18
在polyfills.ts和polyfills.ts中将所有“ es6”和“ es7”更改为“ es”(可选)。
import 'core-js/es6/symbol';
import 'core-js/es/symbol';
Bha*_*tel 11
迁移到Angular 8后,“ core-js / es6”或“ core-js / es7”将不起作用。
您只需替换导入'core-js / es /'
对于前。导入'core-js / es6 / symbol'导入'core-js / es / symbol'
这将正常工作。
小智 10
将所有es6
和更改es7
为es
您的polyfills.ts
例子:
import 'core-js/es6/reflect';
Run Code Online (Sandbox Code Playgroud)
变成
import 'core-js/es/reflect';
Run Code Online (Sandbox Code Playgroud)
如果您使用@babel/preset-env
and useBuiltIns
,那么您只需要corejs: 3
在 useBuiltIns 选项旁边添加,以指定要使用的版本,默认为corejs: 2
.
presets: [
[
"@babel/preset-env", {
"useBuiltIns": "usage",
"corejs": 3
}
]
],
Run Code Online (Sandbox Code Playgroud)
有关更多详细信息,请参阅: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
今天(2022 年 4 月 13 日)在将core-js
版本从 2 升级到 3 后,我尝试找到答案几个小时后,终于可以在更新我的版本后解决它babel.config.js
并使其如下所示:
前:
presets: [ "@vue/app" ]
Run Code Online (Sandbox Code Playgroud)
后:
presets: [ [ "@vue/app", { useBuiltIns: "entry" } ] ]
Run Code Online (Sandbox Code Playgroud)
笔记
我在我的项目中使用Vue
我已经尝试了几乎所有有关的问题npm uninstall core-js
并尝试再次重新安装它npm install core-js --save
,delete node_modules, package-lock.json, and yarn-lock.json
但仍然无法解决它
core-js
如果我使用此行降级版本,我可以解决它:npm install core-js@2.6.5
但对于长期情况来说,这不是一个好的解决方案
此问题的解释:出现此问题的原因是core-js/es6
版本 3 中的路径已更改为,core-js/es
这就是为什么您的项目找不到它指向的目录的正确路径core-js/es6
最终在projectpath\src\polyfill.js 中有一个名为polyfill.js的文件 该文件只包含这一行:import 'core-js'; 这个 polyfills 不仅是 es-6,而且是自 3.0.0 版以来使用 core-js 的正确方法。
我加入了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 入口点几乎包括所有这些特性。此外,正如您所写,修复损坏的浏览器实现是必需的。
(引自 zloirock 的https://github.com/zloirock/core-js/issues/184)
所以我认为import 'core-js'; 很好。
当然,我有一个类似的问题和一个简单的
npm uninstall @babel/polyfill --save &&
npm install @babel/polyfill --save
Run Code Online (Sandbox Code Playgroud)
帮我解决了这个问题。
但是,不推荐使用@babel/polyfill(根据此评论),因此仅当您认为安装了较旧的软件包或其他所有方法都失败时才尝试使用此方法。
只需将 tsconfig.json 中的 "target": "es2015" 更改为 "target": "es5"。
使用 Angular 8.2.XX 为我工作
在 IE11 和 Edge 上测试
归档时间: |
|
查看次数: |
38416 次 |
最近记录: |