core-js 简介

JavaScript025

core-js 简介,第1张

开源库 zloirock/core-js

提供了es5、es6的polyfills,包括promises、 symbols 、 collections 、iterators、 typed arrays 、 ECMAScript 7+ proposals 、 setImmediate 等等。

如果使用了 babel-runtime、babel-plugin-transform-runtime 或者 babel-polyfill,你就可以间接的引入了 core-js 标准库

最近新启动了个pc端的项目,项目要求兼容IE,想必各位前端都清楚,要想拿下IE这个破地,必须用上babel。

个人平时对这方面也没有过分的关注,于是乎各种网上寻找解决方案,这一找,发现有时候网络就跟个历史博物馆一样,大部分问题的解决方案基本都是过时了的。通篇看下来,基本全是推荐使用 babel-polyfill 的,于是我上npm看了下,发现这个插件最后一次提交是3年前。

然后在入口文件中加入以下内容:

再运行后,你会发现IE浏览器再也不会只能出来个标题,页面一片空白了。

怎么样?是不是很简单!

1、问题

npm run dev启动react项目时出现以下错误:

These dependencies were not found:

* @babel/runtime/core-js/promise in ./~/_dva@2.4.1@dva/lib/dynamic.js, ./~/_dva-core@1.4.0@dva-core/lib/createPromiseMiddleware.js

* @babel/runtime/core-js/get-iterator in ./~/_dva-core@1.4.0@dva-core/lib/index.js, ./~/_dva-core@1.4.0@dva-core/lib/Plugin.js and 2 others

* @babel/runtime/core-js/object/keys in ./~/_dva-core@1.4.0@dva-core/lib/index.js, ./~/_dva-core@1.4.0@dva-core/lib/checkModel.js and 3 others

打开项目根目录\node_modules\@babel\runtime,发现runtime文件夹下没有core-js文件夹。安装了babel-runtime,但是@babel\runtime下没有该文件夹,说明runtime包有问题,缺少依赖。

这个错误的原因是因为不同插件的二次依赖引入了不同版本的 @babel/runtime。高版本的 7.1.5 下是没有 @babel/runtime/core-js 这个文件夹的,我们 dev 环境编译时resolve的目录是高版本的,在项目目录的 package.json 里 指定个有该文件的版本就好了

2、解决方法

(1)直接命令窗口执行以下命令安装依赖即可:

npm install @babel/runtime@7.0.0-beta.46 --save-dev

注:安装指定版本的依赖到开发/生产环境的方式如下(如果安装了淘宝镜像,用cnpm代替npm安装更快):

npm install xxx --save

npm install xxx --save-dev

(2)在项目根目录的 package.json文件中的"devDependencies"下加上"@babel/runtime": "7.0.0-beta.46",保存后打开命令行运行 npm i,

即安装指定版本7.0.0-beta.46的依赖,如下图:

安装完以后,重新start发现报错没有了,此时查看\node_modules\@babel\runtime,发现多了core-js文件夹,这就是先前所缺少的依赖包,安装了@babel/runtime后解决了依赖包缺失问题。

解决方法来自 https://www.cnblogs.com/journey-blog/p/11110240.html

解决方法来自 https://segmentfault.com/q/1010000017027515?sort=created