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


112

我的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"
  }
}

有人可以帮忙吗?


2
升级版本后,角度应用程序中出现相同的错误。检查此文件夹(core-js / es6)是否在节点模块中存在。
卡米尔·纳贾

@KamilNaja我面临着同样的问题,并且node_modules中不存在文件夹(core-js / es6),node_modules中包含(core-js / es)。该怎么办?
Kunal Tyagi

Answers:


153

对于core-js版本3.0.1的导入已更改-例如

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

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

import 'core-js/es/array';

如果您不希望引入整个core-js


18
将angular迁移到8后,我得到了错误,但您的解决方案已解决。
Nakres

8
这是迁移到angular 8的解决方案:)谢谢
Kris Boyd

我的代码中没有任何开头的内容,import 'core-js/...因此我应该在哪里更改?使用VueJS 2
第一卷

@volumeone在您的终端中运行“ npm i core-js”。
Shivam Shukla

1
@ShivamShukla谢谢,但是我不得不降级到2.6.11才能正常工作。mini-css-extract-plugin和core-js 3之间有一个错误
第一卷

98

我找到了可能的答案。您有core-js版本3.0,此版本没有用于ES6ES7的单独文件夹;这就是应用程序找不到正确路径的原因。

要解决此错误,您可以将core-js版本降级为2.5.7。此版本使用单独的ES6ES7文件夹生成正确的目录结构。

要降级版本,只需运行:

npm i -S core-js@2.5.7

就我而言,使用Angular可以正常工作。


1
谢谢,至少这是一个解决方案。我还发现了使用3.0版而不降级的解决方案。将在
Gutelaunetyp

认真对待救生员。谢谢。
IRCraziestTaxi

1
您能解释一下降级不会破坏其他一切吗,为什么不更新为新格式吗?您有一吨的赞成票,这表明这对人们来说效果很好,但是肯定这不是一个好的长期解决方案。
Simon_Weaver

因此,完美的解决方案是每当您使用core-js使用最新版本时就升级您的导入。不幸的是,当在其他库中使用此依赖项时,此解决方案可能是不可能的,并且您需要使用解决方法。
卡米尔·纳雅

4
-1这是消除消息的创可贴,降级您的包不是进入的好习惯。读者在更正其输入时会更好。它不仅一样简单甚至更简单,而且是更好的实践:stackoverflow.com/a/56186570/610573
Chris Baker

42

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

  • 从: import 'core-js/es6/symbol';
  • 至: import 'core-js/es/symbol';

21

之后迁移到Angular8core-js/es6否则core-js/es7将无法正常工作。

您只需替换导入 core-js/es/

对于前。

import 'core-js/es6/symbol'  

import 'core-js/es/symbol'

这将正常工作。


在Angular 8中为我工作!
ihimv

这对我有用,但我仍然很困惑。我与Angular源交叉引用,希望看到这种较新的单次导入-甚至“ hello world Ivy”示例仍显示/es6路径github.com/angular/angular/blob/master/integration / ...知道为什么这样做吗?
Simon_Weaver


4

当然,我有一个类似的问题,一个简单的

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

为我做了把戏。

但是,不赞成使用@ babel / polyfill(根据此注释),因此仅当您认为安装了旧软件包或所有其他软件包都失败时才尝试使用此方法。


1
老兄,您是救生员。它使我发疯。
DiederikEEn

4
的使用@babel/polyfill已经过时了。
神经递质

3

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

为我使用Angular 8.2.XX

在IE11和Edge上测试


2

最终在projectpath \ src \ polyfill.js中有一个名为polyfill.js的文件 该文件仅包含以下行:import'core -js'; 从3.0.0版本开始,此polyfill不仅填充了es-6,而且是使用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'; 很好


有关要导入的模块和名称空间的更多信息,请查看core-js当前文档
卡马菲瑟

是否可以将其标记为正确答案,我认为这更准确,尤其是将近一年之后。
doz87


0

更改您的Polyfills.ts文件

在您的polyfills.ts和polyfills.ts中将所有“ es6”和“ es7”更改为“ es”

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.