详解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 常用关键字列表集合
Dec 04 Javascript
在次封装easyui-Dialog插件实现代码
Nov 14 Javascript
javascript中怎么做对象的类型判断
Nov 11 Javascript
Node.js中创建和管理外部进程详解
Aug 16 Javascript
每天一篇javascript学习小结(面向对象编程)
Nov 20 Javascript
Bootstrap入门书籍之(四)菜单、按钮及导航
Feb 17 Javascript
漂亮! js实现颜色渐变效果
Aug 12 Javascript
Vue.js组件使用开发实例教程
Nov 01 Javascript
Bootstrap路径导航与分页学习使用
Feb 08 Javascript
jQuery基于ajax实现页面加载后检查用户登录状态的方法
Feb 10 Javascript
JS去掉字符串中所有的逗号
Oct 18 Javascript
js 数组当前行添加数据方法详解
Jul 28 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 switch语句多个值匹配同一代码块应用示例
2014/07/29 PHP
php输出金字塔的2种实现方法
2014/12/16 PHP
PHP版单点登陆实现方案的实例
2016/11/17 PHP
Javascript实例教程(19) 使用HoTMetal(6)
2006/12/23 Javascript
jquery进行数组遍历如何跳出当前的each循环
2014/06/05 Javascript
jquery操作HTML5 的data-*的用法实例分享
2014/08/17 Javascript
jQuery中$this和$(this)的区别介绍(一看就懂)
2015/07/06 Javascript
JavaScript实现图片滑动切换的代码示例分享
2016/03/06 Javascript
H5移动端图片压缩上传开发流程
2016/11/09 Javascript
微信小程序与php 实现微信支付的简单实例
2017/06/23 Javascript
浅谈使用mpvue开发小程序需要注意和了解的知识点
2018/05/23 Javascript
webpack打包多页面的方法
2018/11/30 Javascript
在Vue.js中使用TypeScript的方法
2020/03/19 Javascript
Python实现的批量下载RFC文档
2015/03/10 Python
在Django中使用Sitemap的方法讲解
2015/07/22 Python
python判断一个集合是否为另一个集合的子集方法
2018/05/04 Python
python smtplib模块自动收发邮件功能(二)
2018/05/22 Python
对Python实现简单的API接口实例讲解
2018/12/10 Python
Python判断两个文件是否相同与两个文本进行相同项筛选的方法
2019/03/01 Python
Dlib+OpenCV深度学习人脸识别的方法示例
2019/05/14 Python
Python 虚拟环境工作原理解析
2020/12/24 Python
python实现杨辉三角的几种方法代码实例
2021/03/02 Python
Canvas globalCompositeOperation
2018/12/18 HTML / CSS
vivo智能手机官方商城:vivo
2016/09/22 全球购物
美国主要的特色咖啡和茶公司:Peet’s Coffee
2020/02/14 全球购物
制衣厂各岗位职责
2013/12/02 职场文书
医学生自荐信范文
2013/12/03 职场文书
公司清洁工岗位职责
2013/12/14 职场文书
水毁工程实施方案
2014/04/01 职场文书
银行委托书范本
2014/04/04 职场文书
中秋晚会策划方案
2014/06/12 职场文书
小学教师读书活动总结
2014/07/08 职场文书
党员对照检查材料思想汇报(党的群众路线)
2014/09/24 职场文书
公司放假通知怎么写
2015/04/15 职场文书
导游词之潮音寺
2019/09/26 职场文书
Python3 类型标注支持操作
2021/06/02 Python