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

 更新时间:2019年05月12日 10:15:17   作者:Shurlormes  
这篇文章主要介绍了详解babel升级到7.X采坑总结,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

最近工作比较忙,有一段时间没有写前端玩了。今天试着搭一个项目,发现各种坑,以前用起来非常好的配置文件各种报错。排查后发现原来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的惯性运动实现代码实例

    这篇文章主要介绍了javascript的惯性运动实现代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • js删除所有的cookie的代码

    js删除所有的cookie的代码

    有时候需要删除网站的cookies,一个一个太麻烦,这个可以批量的删除所有的cookies,需要的朋友可以参考下。
    2010-11-11
  • 关于IE、Firefox、Opera页面呈现异同 写脚本很痛苦

    关于IE、Firefox、Opera页面呈现异同 写脚本很痛苦

    关于IE、Firefox、Opera页面呈现异同 写脚本很痛苦,对于多浏览器的兼容性,需要注意。
    2009-08-08
  • 使用JavaScript生成罗马字符的实例代码

    使用JavaScript生成罗马字符的实例代码

    这篇文章主要介绍了使用JavaScript生成罗马字符的实例代码,需要的朋友可以参考下
    2018-06-06
  • input框中自动展示当前日期yyyy/mm/dd的实现方法

    input框中自动展示当前日期yyyy/mm/dd的实现方法

    下面小编就为大家带来一篇input框中自动展示当前日期yyyy/mm/dd的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • 详解如何使用babel进行es6文件的编译

    详解如何使用babel进行es6文件的编译

    这篇文章主要介绍了详解如何使用babel进行es6文件的编译,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05
  • 浅谈regExp的test方法取得的值变化的原因及处理方法

    浅谈regExp的test方法取得的值变化的原因及处理方法

    下面小编就为大家带来一篇浅谈regExp的test方法取得的值变化的原因及处理方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • JS+Ajax实现百度智能搜索框

    JS+Ajax实现百度智能搜索框

    现在遇到这样的需求,要求输入一个a之后会出现包含a的下拉列表,当我们点击某一个的时候,搜索框中就会出现点击的值。下面小编给大家分享同js和ajax实现百度智能搜索框,需要的的朋友参考下实现代码
    2017-08-08
  • 使用Webpack压缩与转译JavaScript代码的操作方法

    使用Webpack压缩与转译JavaScript代码的操作方法

    在Web开发中,代码的性能和加载时间是用户体验的重要组成部分,为此,将JavaScript代码压缩和优化是发布前一个必不可少的步骤,所以本文给大家介绍了如何使用Webpack压缩与转译JavaScript代码,需要的朋友可以参考下
    2024-05-05
  • javascript精确统计网站访问量实例代码

    javascript精确统计网站访问量实例代码

    网站一般都有访问量统计工具,比较高效实用的工具多种多样,这篇文章主要介绍了javascript精确统计网站访问量实例代码,感兴趣的小伙伴们可以参考一下
    2015-12-12

最新评论