开发过程中碰到了ie白屏的情况,排查后发现是sm4相关代码导致的兼容性问题,记录一下。本文参考了国密算法sm2、sm3和sm4的js版 及 IE兼容处理_crazy_jialin的博客-CSDN博客
问题
在ie下,很可能碰到sm-crypto
包报语法错误,如图:
解决方案
问题的原因是,引用了sm4,但似乎并没有对其编译,导致在IE浏览器不兼容。
- 在
vue.config.js
的transpileDependencies
中把我们的包添加进去,让babel-loader能够帮我们转译sm-crypto
包中的内容:module.exports = { // ... transpileDependencies: [ 'sm-crypto' ] }
babel.config.js
中对应位置添加如下配置:module.exports = { // ... sourceType: 'unambiguous' }