问题描述
在开发环境中使用 webpack-dev-server 时,IE11 浏览器报告 JavaScript 错误。经排查,问题源于 webpack-dev-server 所依赖的 sockjs-client 1.6.1 版本不支持 IE11 浏览器。
由于 webpack-dev-server 仅安装在 devDependencies 中,此问题仅影响本地开发环境,生产环境不受影响。
解决方案
强制将 sockjs-client 降级到兼容 IE11 的 1.5.1 版本。以下是三种实现方法:
方法一:使用 npm overrides (npm ≥ 8.3.0)
在 package.json 文件中添加 overrides 字段:
json
{
"overrides": {
"sockjs-client": "1.5.1"
}
}
完成配置后,执行以下命令:
bash
npm install
方法二:使用 yarn resolutions
在 package.json 文件中添加 resolutions 字段:
json
{
"resolutions": {
"sockjs-client": "1.5.1"
}
}
完成配置后,执行以下命令:
bash
yarn install
方法三:直接安装指定版本
直接安装兼容版本的 sockjs-client:
bash
# 使用 npm
npm install sockjs-client@1.5.1 --save-dev
# 使用 yarn
yarn add sockjs-client@1.5.1 --dev
方案比较
方法 | 适用场景 | 优点 | 缺点 |
---|---|---|---|
npm overrides | npm ≥ 8.3.0 | 官方解决方案,无需额外工具 | 需要较新版本npm |
yarn resolutions | 使用yarn的工作流 | 专为依赖重写设计 | 仅适用于yarn |
直接安装 | 快速临时解决 | 简单直接 | 可能被其他依赖升级覆盖 |