详解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 相关文章推荐
javascript 读取图片文件的大小
Jun 25 Javascript
LazyLoad 延迟加载(按需加载)
May 31 Javascript
多浏览器兼容性比较好的复制到剪贴板的js代码
Oct 09 Javascript
什么是DOM(Document Object Model)文档对象模型
Mar 05 Javascript
JQuery验证jsp页面属性是否为空(实例代码)
Nov 08 Javascript
jquery sortable的拖动方法示例详解
Jan 16 Javascript
jQuery使用prepend()方法在元素前添加内容用法实例
Mar 26 Javascript
javascript实现图片左右滚动效果【可自动滚动,有左右按钮】
Sep 19 Javascript
详谈jQuery中使用attr(), prop(), val()获取value的异同
Apr 25 jQuery
提升node.js中使用redis的性能遇到的问题及解决方法
Oct 30 Javascript
vue插件--仿微信小程序showModel实现模态提示窗功能
Aug 19 Javascript
JS+CSS实现炫酷光感效果
Sep 05 Javascript
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
S900/ ETON E1-XM 收音机
2021/03/02 无线电
php实现对两个数组进行减法操作的方法
2015/04/17 PHP
thinkphp3.2点击刷新生成验证码
2016/02/16 PHP
javascript 命名规则 变量命名规则
2010/02/25 Javascript
简单对比分析JavaScript中的apply,call与this的使用
2015/12/04 Javascript
jQuery扩展实现text提示还能输入多少字节的方法
2016/11/28 Javascript
jQuery实现Select下拉列表进行状态选择功能
2017/03/30 jQuery
react开发中如何使用require.ensure加载es6风格的组件
2017/05/09 Javascript
微信小程序获取手机号授权用户登录功能
2017/11/09 Javascript
简述JS浏览器的三种弹窗
2018/07/15 Javascript
js计算两个时间差 天 时 分 秒 毫秒的代码
2019/05/21 Javascript
在layui中layer弹出层点击事件无效的解决方法
2019/09/05 Javascript
Vue中图片Src使用变量的方法
2019/10/30 Javascript
使用Vue实现简单计算器
2020/02/25 Javascript
[01:38]完美世界高校联赛决赛花絮
2018/12/02 DOTA
[52:02]DOTA2-DPC中国联赛 正赛 Phoenix vs Dragon BO3 第二场 2月26日
2021/03/11 DOTA
Python导出数据到Excel可读取的CSV文件的方法
2015/05/12 Python
python并发和异步编程实例
2018/11/15 Python
pandas删除行删除列增加行增加列的实现
2019/07/06 Python
用python求一重积分和二重积分的例子
2019/12/06 Python
基于python3的socket聊天编程
2020/02/17 Python
Python爬虫Scrapy框架CrawlSpider原理及使用案例
2020/11/20 Python
如何用PyPy让你的Python代码运行得更快
2020/12/02 Python
Melissa香港官网:MDreams
2016/07/01 全球购物
求职信内容考虑哪几点
2013/10/05 职场文书
专升本自我鉴定
2013/10/10 职场文书
后勤工作职责
2013/12/22 职场文书
村官学习十八大感想
2014/01/15 职场文书
校园标语大全
2014/06/19 职场文书
综治维稳工作承诺书
2014/08/30 职场文书
学习考察心得体会
2014/09/04 职场文书
2014年祖国生日寄语
2014/09/19 职场文书
防灾减灾宣传标语
2014/10/07 职场文书
个人委托书范文
2015/01/28 职场文书
家长意见和建议怎么写
2015/06/04 职场文书
公司借款担保书
2015/09/22 职场文书