如何解决webpack-dev-middleware Range问题及Angular9单元测试构建故障
我来帮你逐个解决这两个开发中遇到的问题:
问题1:修复webpack-dev-middleware/lib/util.js第131行的Range问题
这个问题通常和版本不兼容或者Range请求的处理逻辑漏洞有关,给你几个可行的解决思路:
- 先检查版本兼容性:webpack和webpack-dev-middleware的版本必须匹配,比如webpack 4对应webpack-dev-middleware@3.x系列,webpack 5则需要@4.x及以上版本。你可以先运行
npm ls webpack webpack-dev-middleware查看当前项目的版本组合,如果不匹配,调整到对应兼容版本(比如卸载现有包后重新安装适配版本:npm uninstall webpack-dev-middleware && npm install webpack-dev-middleware@<兼容版本号>)。 - 临时修复代码逻辑:如果暂时不想更换版本,直接定位到
util.js第131行,大概率是没有处理Range请求头为空的情况。你可以修改这段代码:// 原代码可能类似这样: const range = contentRange(req, stat.size); // 修改为: const rangeHeader = req.headers.range; if (!rangeHeader) { // 如果没有Range头,直接跳过后续处理或者返回默认响应 return; } const range = contentRange(req, stat.size); - 清理依赖缓存重装:有时候依赖缓存会导致奇怪的问题,运行以下命令清理后重装:
Windows环境:
类Unix环境:rmdir /s /q node_modules del package-lock.json npm installrm -rf node_modules package-lock.json npm install
问题2:Angular 9单元测试构建问题排查(Angular CLI:9.1.12, Node:15.1.0, Win32 x64)
首先要明确:Angular 9官方推荐的Node版本是10.x、12.x、14.x(LTS版本),Node 15是非LTS版本,和Angular 9的依赖存在兼容性问题,这大概率是核心原因。给你一步步的排查方案:
- 降级Node到兼容版本:用nvm(Windows推荐nvm-windows)来管理Node版本,操作步骤:
- 安装nvm后,运行
nvm install 14.21.3(这是Node14的最后一个LTS版本) - 切换到该版本:
nvm use 14.21.3
- 安装nvm后,运行
- 统一Angular依赖版本:确保项目中所有@angular/*包的版本都是9.1.12,避免版本不一致导致冲突。运行:
npm install @angular/cli@9.1.12 @angular/core@9.1.12 --save - 清理Angular缓存和依赖:
ng cache clean --all rmdir /s /q node_modules del package-lock.json npm install - 检查测试配置:打开
angular.json,找到test配置节点,确认builder字段是@angular-devkit/build-angular:karma,如果有自定义的webpack配置,暂时注释掉再测试,排查是否是自定义配置导致的问题。 - 查看详细错误日志:运行测试时加上
--verbose参数,输出详细日志:
根据日志里的具体错误信息(比如某个组件的编译错误、依赖缺失等),针对性修复问题。ng test --verbose
内容的提问来源于stack exchange,提问作者Nihal Ahmed Choudhary




