详解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 相关文章推荐
用 JSON 处理缓存
Apr 27 Javascript
jQuery的12招常用技巧分享
Aug 08 Javascript
js实现广告漂浮效果的小例子
Jul 02 Javascript
JS Loading功能的简单实现
Nov 29 Javascript
BootStrap3学习笔记(一)之网格系统
May 20 Javascript
浅谈js中StringBuffer类的实现方法及使用
Sep 02 Javascript
JS简单随机数生成方法
Sep 05 Javascript
js控制按钮,防止频繁点击响应的实例
Feb 15 Javascript
对vue.js中this.$emit的深入理解
Feb 23 Javascript
微信小程序实现留言板
Oct 31 Javascript
详解Vue中watch的详细用法
Nov 28 Javascript
Vue实现跑马灯样式文字横向滚动
Nov 23 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
php 操作调试的方法
2012/07/12 PHP
PHP utf-8编码问题,utf8编码,数据库乱码,页面显示输出乱码
2013/04/08 PHP
jQuery Dialog 弹出层对话框插件
2010/08/09 Javascript
JS高级笔记
2011/07/13 Javascript
JavaScript 实现类的多种方法实例
2013/05/01 Javascript
jquery UI Datepicker时间控件的使用方法(基础版)
2015/11/07 Javascript
基于jQuery实现点击弹出层实例代码
2016/01/01 Javascript
jQuery Ajax 加载数据时异步显示加载动画
2016/08/01 Javascript
Angularjs实现带查找筛选功能的select下拉框示例代码
2016/10/04 Javascript
Bootstrap CSS组件之导航(nav)
2016/12/17 Javascript
Node.js调试技术总结分享
2017/03/12 Javascript
详解webpack+angular2开发环境搭建
2017/06/28 Javascript
限时抢购-倒计时的完整实例(分享)
2017/09/17 Javascript
原生JS实现的雪花飘落动画效果
2018/05/03 Javascript
jQuery使用bind动态绑定事件无效的处理方法
2018/12/11 jQuery
js继承的这6种方式!(上)
2019/04/23 Javascript
微信小程序实现发微博功能的示例代码
2020/06/24 Javascript
Python urlopen 使用小示例
2008/09/06 Python
Mac OS X10.9安装的Python2.7升级Python3.3步骤详解
2013/12/04 Python
解决Linux系统中python matplotlib画图的中文显示问题
2017/06/15 Python
python单例模式获取IP代理的方法详解
2018/09/13 Python
python获取url的返回信息方法
2018/12/17 Python
在Python 字典中一键对应多个值的实例
2019/02/03 Python
全网首秀之Pycharm十大实用技巧(推荐)
2020/04/27 Python
python:解析requests返回的response(json格式)说明
2020/04/30 Python
pycharm如何设置官方中文(如何汉化)
2020/12/29 Python
Python环境搭建过程从安装到Hello World
2021/02/05 Python
应届生体育教师自荐信
2013/10/03 职场文书
学前教育毕业生自荐信
2013/10/29 职场文书
销售员个人求职的自我评价
2014/02/10 职场文书
人力资源本科毕业生求职信
2014/06/04 职场文书
学校2014重阳节活动策划方案
2014/09/16 职场文书
小学班主任经验交流材料
2014/12/16 职场文书
比赛口号霸气押韵
2015/12/24 职场文书
教你如何使用Python下载B站视频的详细教程
2021/04/29 Python
使用Redis实现实时排行榜功能
2021/07/02 Redis