Angular中app.module.ts导入语句失败,找不到指定组件模块
这种模块找不到的报错在Angular开发里太常见了,结合你给出的文件路径,我帮你梳理几个最可能的原因和解决办法:
路径层级错误(最可能的原因)
你的app.module.ts位于ClientApp/app/目录下,导入时写的./shop/productList.component是从当前app目录下找shop文件夹,但实际productList.component.ts是在ClientApp/shop/(也就是app目录的上一级)。正确的相对路径应该是../shop/productList.component,把./改成../就能定位到上一级的shop目录了。文件名大小写不匹配
如果你的开发环境是Linux/macOS(或者开启了TypeScript严格大小写检查),文件名的大小写是严格区分的。比如你导入的是productList.component,但实际文件名是ProductList.component.ts(首字母大写),就会导致找不到模块。Windows系统虽然不区分,但跨环境编译时就会暴露这个问题。TypeScript配置影响
检查项目根目录的tsconfig.json文件:- 看
baseUrl和paths配置,有没有设置了错误的路径映射,干扰了相对路径的解析; - 确认
include数组是否包含了../shop/**/*,如果只包含了app/**/*,TypeScript会忽略shop目录下的文件,自然找不到模块。
- 看
导出或缓存问题
再确认下productList.component.ts里的导出语句是不是export class ProductList { ... },有没有漏写export关键字或者拼写错误;另外可以试试清除Angular编译缓存:运行ng clean,然后重启IDE,再重新编译项目,有时候缓存会导致奇怪的错误提示。
内容的提问来源于stack exchange,提问作者Sami

