详解babel升级到7.X采坑总结


Posted in Javascript onMay 12, 2019

最近工作比较忙,有一段时间没有写前端玩了。今天试着搭一个项目,发现各种坑,以前用起来非常好的配置文件各种报错。排查后发现原来babel升级了一个大版本,已经到7.X了,这里我总结一下升级过程中踩到的坑。

Error: Cannot find module '@babel/core'
babel-loader@8 requires Babel 7.x (the package '@babel/core'). If you'd like to use Babel 6.x ('babel-core'), you should install 'babel-loader@7'.
  at Function.Module._resolveFilename (module.js:547:15)
  at Function.Module._load (module.js:474:25)
  at Module.require (module.js:596:17)
  at require (internal/module.js:11:18)
  ....

没找到@babel/core,需要把babel-core卸载掉,从新安装@babel/core

npm un babel-core
npm i -D @babel/core
ERROR in ./src/index.jsx
Module build failed (from ./node_modules/babel-loader/lib/index.js):
Error: Plugin/Preset files are not allowed to export objects, only functions.
...

将babel-preset-*卸载,重新安装@babel/preset-*,并且修改 .babelrc中的 presets

比如我的

npm:
- babel-preset-env
+ @babel/preset-env
- babel-preset-react
+ @babel/preset-react
- babel-preset-stage-0

.babelrc:
- "presets": ["react", "env", "stage-0", "mobx"]
+ "presets": ["@babel/preset-react", "@babel/preset-env", "mobx"]

除了上述的preset,我还用了babel-preset-mobx

但是没找到 @babel/preset-mobx,从babel-preset-mobx git提交日志上看,作者已经支持了最新的babel。在之后的测试中,发现mobx的功能也能正常使用。

另外,stage-*已弃用

ERROR in ./src/index.jsx
Module build failed (from ./node_modules/babel-loader/lib/index.js):
TypeError: this.setDynamic is not a function
  at PluginPass.pre
  ...

这次是插件了,一样把babel-plugin-*卸载,重新安装@babel/plugin-*

然后修改.babelrc文件

具体的包名可以在 npm仓库 里找

最终文件

.babelrc:

{
  "presets": ["@babel/preset-env", "@babel/preset-react", "mobx"],
  "plugins": [
    "@babel/plugin-proposal-object-rest-spread",
    "@babel/plugin-transform-runtime"
  ]
}

package.json:

"devDependencies": {
  "@babel/core": "^7.1.0",
  "@babel/plugin-proposal-object-rest-spread": "^7.0.0",
  "@babel/plugin-transform-runtime": "^7.1.0",
  "@babel/preset-env": "^7.1.0",
  "@babel/preset-react": "^7.0.0",
  "babel-loader": "^8.0.2"
  "babel-preset-mobx": "^2.0.0",
  ...
 },
 "dependencies": {
  "@babel/runtime": "^7.0.0",
  ...
 }

总结

这次升级,功能上有什么变化我就不在这里写了,大家可以自行搜索

总的来说,babel舍弃了以前的 babel-*-* 的命名方式,改成了@babel/*-*

修改依赖和.babelrc文件后就能正常启动项目了。

webpack不用修改(除非你是webpack 3.X 升webpack 4.X)

上面的只是我遇到的问题,如果还有其他问题,可以参考资料升级指南 Upgrade to Babel 7

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
不间断滚动JS打包类,基本可以实现所有的滚动效果,太强了
Dec 08 Javascript
js模仿windows桌面图标排列算法具体实现(附图)
Jun 16 Javascript
jQuery实用技巧必备(上)
Nov 02 Javascript
浅谈javascript中onbeforeunload与onunload事件
Dec 10 Javascript
浅谈js基础数据类型和引用类型,深浅拷贝问题,以及内存分配问题
Sep 02 Javascript
ActiveX控件的使用-js实现打印超市小票功能代码详解
Nov 22 Javascript
vue.js前后端数据交互之提交数据操作详解
Apr 24 Javascript
angular学习之动态创建表单的方法
Dec 07 Javascript
详解基于mpvue微信小程序下载远程图片到本地解决思路
May 16 Javascript
JavaScript实现浏览器网页自动滚动并点击的示例代码
Dec 05 Javascript
JS+CSS实现过渡特效
Jan 02 Javascript
Vue的过滤器你真了解吗
Feb 24 Vue.js
babel7.x和webpack4.x配置vue项目的方法步骤
May 12 #Javascript
vue轻量级框架无法获取到vue对象解决方法
May 12 #Javascript
使vue实现jQuery调用的两种方法
May 12 #jQuery
React优化子组件render的使用
May 12 #Javascript
基于elementUI使用v-model实现经纬度输入的vue组件
May 12 #Javascript
vue组件中watch props根据v-if动态判断并挂载DOM的问题
May 12 #Javascript
用js简单提供增删改查接口
May 12 #Javascript
You might like
农民C键的运用技巧
2020/03/04 星际争霸
用Zend Encode编写开发PHP程序
2006/10/09 PHP
在Windows版的PHP中使用ADO
2006/10/09 PHP
php $_SERVER当前完整url的写法
2009/11/12 PHP
PHP 读取和编写 XML
2014/11/19 PHP
ThinkPHP3.2.1图片验证码实现方法
2016/08/19 PHP
php中strtotime函数性能分析
2016/11/20 PHP
PHP实现文件上传功能实例代码
2017/05/18 PHP
PHP编程快速实现数组去重的方法详解
2017/07/22 PHP
JavaScript调用Activex控件的事件的实现方法
2010/04/11 Javascript
JavaScript高级程序设计(第3版)学习笔记10 再访js对象
2012/10/11 Javascript
mailto的使用技巧分享
2012/12/21 Javascript
jQuery源码解读之hasClass()方法分析
2015/02/20 Javascript
全面详细的jQuery常见开发技巧手册
2016/02/21 Javascript
jquery ezUI 双击行记录弹窗查看明细的实现方法
2016/06/01 Javascript
如何在JS中实现相互转换XML和JSON
2016/07/19 Javascript
Javascript vue.js表格分页,ajax异步加载数据
2016/10/24 Javascript
原生JS查找元素的方法(推荐)
2016/11/22 Javascript
详解jQuery uploadify文件上传插件的使用方法
2016/12/16 Javascript
AngularJS点击添加样式、点击变色设置的实例代码
2017/07/27 Javascript
深入Vue-Router路由嵌套理解
2018/08/13 Javascript
es6数值的扩展方法
2019/03/11 Javascript
jQuery实现颜色打字机的完整代码
2020/03/19 jQuery
[04:22]DOTA2上海特级锦标赛主赛事第四日TOP10
2016/03/06 DOTA
Python/ArcPy遍历指定目录中的MDB文件方法
2018/10/27 Python
python多进程并行代码实例
2019/09/30 Python
python不相等的两个字符串的 if 条件判断为True详解
2020/03/12 Python
用python计算文件的MD5值
2020/12/23 Python
英国广泛的照明产品网站:Lights4living
2018/01/28 全球购物
*p++ 自增p 还是p所指向的变量
2016/07/16 面试题
会计岗位职责
2013/11/08 职场文书
快递业务员岗位职责
2014/01/06 职场文书
计算机毕业生求职信
2014/06/10 职场文书
环保项目建议书
2014/08/26 职场文书
2014年高中教师工作总结
2014/12/19 职场文书
2016年大学生寒假社会实践心得体会
2015/10/09 职场文书