Angular5中TypeScript编译提示文件缺失问题求助
我可太熟悉这个报错了!明明已经加了include还是踩坑,多半是这几个细节没注意到,咱们逐个排查:
核对
include路径的准确性
首先得确认tsconfig.app.json里的include路径是相对于这个配置文件本身的。比如你的File.ts在src/utils目录下,而tsconfig.app.json就在src文件夹里,那你需要写["utils/File.ts"],或者用更通用的["**/*.ts"](匹配所有子目录下的ts文件)。别写错层级,比如多写了个../就会指向上级目录,自然找不到目标文件。检查父配置的
exclude规则
因为你的tsconfig.app.json继承了../tsconfig.json,如果父配置里的exclude列表包含了File.ts所在的目录,子配置的include会被直接覆盖。打开父tsconfig.json看看有没有类似"exclude": ["src/some-dir/**"]的规则,要是你的文件刚好在这个目录里,得把它从exclude里移除,或者在子配置里用include明确指定该文件。重启编译器/开发服务器
TypeScript编译器有时候不会自动监听tsconfig的修改,改完配置后一定要重启你的构建工具——比如用Angular的话就重启ng serve,用webpack的话重启dev server。我好几次都是改了配置没重启,白折腾半天。确认文件的真实扩展名
要是你的系统默认隐藏了文件扩展名,有可能你以为是File.ts,实际却是File.ts.txt。去文件夹设置里开启“显示文件扩展名”,检查一下文件名是不是真的正确。注意文件名的大小写
Windows系统不区分文件名大小写,但Linux/macOS是严格区分的。如果你的代码里import的是./File.ts,但实际文件名叫file.ts,在Windows上能临时跑通,但编译时就会触发这个报错,统一大小写就能解决。
给你一个参考的tsconfig.app.json配置示例:
{ "extends": "../tsconfig.json", "compilerOptions": { "outDir": "../out-tsc/app", "baseUrl": "./", "module": "es2015", // 其他编译选项... }, "include": [ "**/*.ts", // 匹配所有子目录下的ts文件 "path/to/your/File.ts" // 也可以单独指定你的目标文件 ], "exclude": [ "**/*.spec.ts", "test.ts" ] }
内容的提问来源于stack exchange,提问作者Idov

