Angular5、ASP.NET Core2.0+Webpack环境下找不到@angular/common/http模块求助
@angular/common/http时智能提示报错的问题 我之前也碰到过类似的情况,Angular 4.3+确实已经把HttpClientModule迁移到@angular/common/http了,你用5.2.9版本肯定是支持的,智能提示报错大概率不是Webpack的锅,先从下面几个方向排查:
1. 确认@angular/common的实际安装版本
你的package.json里写的是@angular/common": "^5.0.0",虽然^会拉取5.x的最新版,但有时候npm缓存或者依赖冲突可能导致实际安装的版本低于5.2.9(不过5.0.x本身也应该包含这个模块)。
打开命令行进入项目根目录,运行:
npm list @angular/common
如果显示的版本不是5.2.9,直接升级到匹配版本:
npm install @angular/common@5.2.9 --save
2. 清理依赖缓存并重新安装
npm缓存经常会导致依赖安装不完整,这是最常见的解决办法:
- 删除项目根目录的
node_modules文件夹 - 删除
package-lock.json文件(如果用yarn就删yarn.lock) - 运行缓存清理命令:
npm cache clean --force - 最后重新安装依赖:
npm install
3. 调整VS2017的TypeScript版本设置
VS2017自带的TypeScript版本可能和你项目里的~2.7.2不匹配,导致智能解析出错:
- 打开VS2017,点击顶部菜单的工具→选项
- 在弹出的窗口里找到TypeScript→项目,选择“使用项目中安装的TypeScript版本”
- 重启VS,重新加载项目
4. 检查tsconfig.json的模块解析配置
确保你的tsconfig.json里的compilerOptions配置了正确的模块解析方式:
{ "compilerOptions": { "moduleResolution": "node", // 其他配置... } }
这个配置是让TypeScript按照Node.js的模块规则去查找依赖,缺失的话可能找不到@angular/common/http的类型定义。
5. 最后再检查Webpack配置(如果是自定义配置的话)
看你的package.json里有postinstall命令跑webpack.config.vendor.js,如果是手动维护vendor包的话,要确保webpack.config.vendor.js的entry里包含了@angular/common/http:
entry: { vendor: [ '@angular/common/http', // 其他需要打包到vendor的依赖... ] }
不过如果你的项目是用Angular CLI生成的,不建议手动修改Webpack配置,CLI会自动处理这些依赖。
6. 重置VS的IntelliSense缓存
有时候VS的智能提示缓存会抽风,直接重置一下:
- 关闭VS2017
- 删除项目根目录下的
.vs隐藏文件夹 - 重新打开项目,等待IntelliSense加载完成
按上面的步骤走一遍,应该能解决智能提示找不到模块的问题。
内容的提问来源于stack exchange,提问作者RS FG

