webpack打包后ie访问出现“btoa“未定义

在使用webpack5重构配置并需要兼容IE9时,遇到"btoa"未定义的错误。经过排查,问题并非出在babel对ES6或typescript的兼容,也不是sourcemap配置。最终发现在生产环境下,由于MiniCssExtractPlugin的loader配置问题导致。修复了三目运算符的括号问题后,解决了该错误。此事强调了良好代码习惯的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述

最近在用最新webpack5重新写配置文件时发现,在js在js中引入scss文件,打包后在chrome浏览器是并没有问题,但由于项目兼容到ie9,在ie9做测试时发现报错"btoa"未定义。mdn上查询到btoa是在ie10以上才有效。

思考解决过程

在webpack配置里已经使用对ES6的语法进行babel兼容到ie9,一开始认为是babel对typescript的语法兼容配置问题,但经过对ts文件的排查发现问题并不在babel上,看了打包的源码也发现是对css的sourcemap指向,那么就是说这些不是在于自己写的代码身上的兼容问题。于是认为是sourcemap的问题,在所有的生产模式下可以设置sourcemap的都设为false,且将devtool也设置为nosourcemap,但问题依然存在。最后终于将问题锁定在对于css的loader身上。

解决方法

对了css的编译loader进行一个个排查。我在开发环境使用的是style-loader,生产环境用了MiniCssExtractPlugin进行css分离,用了sass,配置如下:

{
   
   
                test: /\.(c|sc)ss$/,
                include: [
                    resolve("src"),
                ],
                use
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值