剩余参数运算符的babel转义配置

news/2024/9/22 11:10:22/

记一次生产构建的报错

uncaught syntaxerror: unexpected token '...'

背景

在处理展示markdown文本功能,并且其中的代码高亮功能时,引入了两个第三发的依赖包markedhighlight.js ,本地功能调试正常之后,一如即往的没有build测试的习惯,所以直接退代码上线部署;

build上线之后,当在加载我的网站main.js时,控制台报错uncaught syntaxerror: unexpected token '...'

确定问题

当你点击跳转到浏览器开发者工具的 sources 这个选项卡,发现是 剩余参数运算符 浏览器不认识,一定是没有babel转义

babel官网测试转义,发现需要开启此项配置forceAllTransforms,就可以进行转义剩余参数运算符
在这里插入图片描述

解决问题

既然是babel问题,那首先就想到了是webpack配置(使用react-create-app脚手架创建的项目)

在这里插入图片描述
默认脚手架生成的webpack.config.js中,关于外部依赖的构建是用了babel-preset-react-app/dependencies 这个包,我们找到这个包对应的js文件,然后去看它的babel相关配置,如下:
在这里插入图片描述
发现是没有forceAllTransforms这项配置的,并且问题出现在刚才安装的两个依赖包中,所以单独再增加一项配置
如果你也是create-react-app创建的项目,下面的代码直接复制到对应config目录下面的文件

// config/paths.js
/** 补充多余的需要二次babel的包 */extraBabelInclude: [resolveApp('node_modules/highlight.js/lib/'),resolveApp('node_modules/groq-sdk/'),resolveApp('node_modules/marked/lib/'),],// config/webpack.config.js
// 只需要生产环境即可
isEnvProduction && {test: /\.(js|mjs)$/,include: paths.extraBabelInclude,loader: require.resolve('babel-loader'),options: {presets: [[require('@babel/preset-env').default,{forceAllTransforms: true}]]}},

书写的位置,就放于在这里插入图片描述
上面,loader默认顺序是从上到下执行的。我们可以先让默认配置执行之后,再去处理我们特殊loader的配置即可。

如果不是通过create-react-app创建的项目,那就按照webpack默认的配置规则,加上forceAllTransforms

写在最后

被这个问题困了一天,说到底还是不熟悉babel的转义配置呀!
如果看到这里,并且帮到我的小伙伴的,就给博主点个赞吧!


http://www.ppmy.cn/news/1528791.html

相关文章

基于SpringBoot+Vue的考研百科网站系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 精品专栏:Java精选实战项目源码、Python精…

Linux_openEuler_24.03部署Oracle 19c部署安装实测验证(无图形桌面-RPM模式)

前言: 近期对openeuler有点兴趣,顺带在做个开发数据仓项目,那就正好安装个环境做个调测,做个记录放上来做个备录给到大家参考。 openEuler 24.03 LTS:四大升级, 首个AI原生开源操作系统正式发布 openEuler …

波士顿机器人滑环的技术特点与应用前景

机器人滑环在现代自动化和机器人技术中扮演着至关重要的角色。作为一种关键的机械组件,滑环允许机器人在旋转和移动的过程中保持稳定的电信号和数据传输。波士顿机器人滑环作为行业中的领先产品,具有多项独特的技术特点和优势,为各种机器人系…

react:React Hook函数

使用规则 只能在组件中或者其他自定义的Hook函数中调用 只能在组件的顶层调用,不能嵌套在if、for、 其他函数中 基础Hook 函数 useState useState是一个hook函数,它允许我们向组件中添加一个状态变量,从而控制影响组件的渲染结果 示例1…

DOS(Disk Operating System,磁盘操作系统)常用指令

目录 背景: 早期探索: DOS之父: 发展历程: 常用指令: 进入命令: 操作1.进入和回退: 操作2.增、删: 操作3.其它: 总结: 背景: 早期探索: DOS(Disk Operating System,磁盘操作系统)在…

C++进阶|多态知识点详解及经典面试题总结

🍬 mooridy-CSDN博客 🧁C专栏(更新中!) 目录 1. 多态的概念 2. 多态的定义及实现 2.1 多态的构成条件 2.2 虚函数的重写/覆盖 2.3 虚函数重写的⼀些其他问题 2.4 override 和 final关键字 2.5 重载/重写/隐藏的…

Mina protocol - 体验教程

Mina protocol - 体验教程 一、零知识证明( Zero Knowledge Proof )1、零知识证明(ZKP)的基本流程工作流程: 2、zkApp 的优势:3、zkApp 每个方法的编译过程: 二、搭建第一个zkapp先决条件1、下载或者更新 zkApp CLI​2…

增强现实系列—Real-Time Simulated Avatar from Head-Mounte

🌟🌟 欢迎来到我的技术小筑,一个专为技术探索者打造的交流空间。在这里,我们不仅分享代码的智慧,还探讨技术的深度与广度。无论您是资深开发者还是技术新手,这里都有一片属于您的天空。让我们在知识的海洋中…