详解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 相关文章推荐
解决IE下select标签innerHTML插入option的BUG(兼容IE,FF,Opera,Chrome,Safari)
May 13 Javascript
10个基于Jquery的幻灯片插件教程
Oct 29 Javascript
js动态生成指定行数的表格
Jul 11 Javascript
jquery easyui 对于开始时间小于结束时间的判断示例
Mar 22 Javascript
JS实现控制表格只显示行边框或者只显示列边框的方法
Mar 31 Javascript
JavaScript合并两个数组并去除重复项的方法
Jun 13 Javascript
轻松学习jQuery插件EasyUI EasyUI实现树形网络基本操作(2)
Nov 30 Javascript
Angularjs手动解析表达式($parse)
Oct 12 Javascript
JS实现自定义状态栏动画文字效果示例
Oct 12 Javascript
通过jquery获取上传文件名称、类型和大小的实现代码
Apr 19 jQuery
浅析vue-router原理
Oct 19 Javascript
vue通过数据过滤实现表格合并
Nov 30 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
PHP的ASP防火墙
2006/10/09 PHP
php的webservice的wsdl的XML无法显示问题的解决方法
2014/03/11 PHP
PHP中使用GD库绘制折线图 折线统计图的绘制方法
2015/11/09 PHP
php设计模式之职责链模式实例分析【星际争霸游戏案例】
2020/03/27 PHP
彻底搞懂JS无缝滚动代码
2007/01/03 Javascript
jQuery 使用手册(三)
2009/09/23 Javascript
jquery鼠标滑过提示title具体实现代码
2013/08/06 Javascript
JS获取节点的兄弟,父级,子级元素的方法
2014/01/09 Javascript
$.each与$().each的区别示例介绍
2014/03/20 Javascript
js闭包的用途详解
2014/11/09 Javascript
JS+CSS实现可拖动的弹出提示框
2015/02/16 Javascript
EXT中单击button按钮grid添加一行(光标位置可设置)的实例代码
2016/06/02 Javascript
JavaScript程序中实现继承特性的方式总结
2016/06/24 Javascript
Google Maps基础及实例解析
2016/08/06 Javascript
nodejs的压缩文件模块archiver用法示例
2017/01/18 NodeJs
Vuejs中使用markdown服务器端渲染的示例
2017/11/22 Javascript
浅谈Vue网络请求之interceptors实际应用
2018/02/28 Javascript
微信小程序实现搜索功能并跳转搜索结果页面
2019/05/18 Javascript
jquery.pager.js实现分页效果
2019/07/29 jQuery
antd design table更改某行数据的样式操作
2020/10/31 Javascript
Python将文字转成语音并读出来的实例详解
2019/07/15 Python
Win10下python 2.7与python 3.7双环境安装教程图解
2019/10/12 Python
Python爬虫设置ip代理过程解析
2020/07/20 Python
关于python tushare Tkinter构建的简单股票可视化查询系统(Beta v0.13)
2020/10/19 Python
纯CSS实现颜色渐变效果(包含环形渐变、线性渐变、彩虹效果等)
2014/05/07 HTML / CSS
使用phonegap查找联系人的实现方法
2017/03/31 HTML / CSS
Optimalprint加拿大:在线打印服务
2020/04/03 全球购物
求高于平均分的学生学号及成绩
2016/09/01 面试题
销售职业生涯规划范文
2014/03/14 职场文书
商场开业庆典策划方案
2014/06/02 职场文书
学生无故旷课检讨书
2014/09/20 职场文书
学生通报表扬范文
2015/05/04 职场文书
初中语文教学反思范文
2016/03/03 职场文书
《岳阳楼记》原文、译文赏析
2019/09/10 职场文书
Python中with上下文管理协议的作用及用法
2022/03/18 Python
使用Redis做预定库存缓存功能
2022/04/02 Redis