找不到模块: 错误: 无法解析‘ core-js/es6’

我的构建过程和我的 React 应用程序有点问题。

我总是得到以下错误:

找不到模块: 错误: 无法解析‘ core-js/es6’

如果我在填充材料 js 中使用这个:

输入‘ core-js/es6’;

那是我的包裹:

{
"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"
}
}

有人能帮忙吗?

177593 次浏览

我找到了可能的答案。您有 Core-Js版本3.0,这个版本没有单独的 ES6ES7文件夹; 这就是为什么应用程序无法找到正确的路径。

要解决此错误,可以将 Core-Js版本降级到2.5。这个版本产生正确的目录结构,与单独的 ES6ES7文件夹。

要降级版本,只需运行:

npm i -S core-js@2.5.7

在我的例子中,对于 Angular,这个工作正常。

最后,在 < strong > projectpath src polyfill.js 中有一个名为 polyfill.js 的文件 这个文件只包含这一行: 导入‘ core-js’;这个填充不仅仅是 es-6,而且是自3.0.0版本以来使用 core-js 的正确方法。

我将 填充物添加到 webpack-file 条目属性中,如下所示:

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)

所以我认为 导入‘ core-js’;很好。

对于 core-js version 3.0.1,导入已经发生了变化——例如

import 'core-js/es6/array'; 还有 import 'core-js/es7/array';

现在可以通过以下方式简单地提供

import 'core-js/es/array';

如果你不想引入所有的 core-js

当然,我也有过类似的问题

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

帮了我大忙。

但是,不推荐使用@babel/polyfill (根据 此评论) ,所以只有在您认为已经安装了较旧的软件包或者其他方法都失败的情况下才可以尝试使用。

在迁移到 新角度版本或版本更改为 Core-Js后,core-js/es6core-js/es7将不起作用。

您只需要在 polyfils.ts 文件中替换 import core-js/es/

为了前任。

import 'core-js/es6/symbol'

import 'core-js/es/symbol'

这个会正常工作的。

将 polyfill s.ts 和 polyfill s.ts 中的所有“ es6”和“ es7”更改为“ es”(可选)。

  • 发信人: import 'core-js/es6/symbol';
  • 收件人: import 'core-js/es/symbol';

只需在 tsconfig.json 中将“ target”: “ es2015”更改为“ target”: “ es5”即可。

用角度8.2为我工作

在 IE11和 Edge 上测试

如果您使用 @babel/preset-envuseBuiltIns,那么您只需要在 useBuiltIns 选项旁边添加 corejs: 3,以指定使用哪个版本,默认值是 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

Make changes to your Polyfills.ts file

polyfills.ts中的所有 es6es7改为 es

例如:

import 'core-js/es6/reflect';

变成了

import 'core-js/es/reflect';

我今天(2022年4月13日)在从 core-js版本2升级到3之后得到了这个错误,在我花了几个小时试图找到答案之后,我终于在更新了我的 babel.config.js之后解决了这个错误,并且把它变成了这样:

以前:

presets: [ "@vue/app" ]

之后:

presets: [ [ "@vue/app", { useBuiltIns: "entry" } ] ]

笔记

  1. 我在我的项目中使用 Vue

  2. 我已经尝试了几乎所有的问题,关于 npm uninstall core-js和尝试重新安装它再次 npm install core-js --savedelete node_modules, package-lock.json, and yarn-lock.json,但仍然无法解决它

  3. 我可以解决它,如果我降级 core-js版本使用这一行: npm install core-js@2.6.5,但它不是一个很好的解决长期条件

  4. 这个问题的解释: 发生这个问题是因为版本3中的 core-js/es6的路径已经被更改为 core-js/es,这就是为什么您的项目找不到指向 core-js/es6的目录的正确路径

例如,Webpack 能够解析 Babel 为源文件提供的导入语句,这一点至关重要

import "core-js/modules/es.object.freeze.js";

如果这样的导入语句被插入到一个文件中,而这个文件并不存在于一个包中,而这个包是以 core-js 作为依赖项的,那么 Webpack 可能无法解析它在磁盘上的位置,从而导致 ModuleNotFoundError。

我的解决方案是在 webpack.config.cjs 的 resolve部分中指定应用程序的 node _ module 目录:

module.exports = {
resolve: {
modules: [
path.join(__dirname, "node_modules"), // Contains core-js.
"node_modules"                        // Webpack's default.
]
}
}

当然,core-js 在我的应用程序的 package.json 中被列为一个依赖项:

{
"dependencies": {
"core-js": "^3.19.3"
}
}

对于角度14,我必须运行 npm i --save core-js

我保留了和 放大文件一样的填充物:

import 'core-js/es/typed-array';
import 'core-js/es/object';