TypeScript编译无响应求助:React项目迁移后tsc无输出
嘿,我一眼就发现问题所在了——你的tsconfig.json里有个关键配置直接导致了这个现象:
你的compilerOptions里设置了"noEmit": true,这个选项的作用是让TypeScript只做类型检查,完全不会生成任何编译后的文件,也不会输出日志(如果没有类型错误的话)。这就是为什么你运行tsc时看起来毫无反应,其实它在后台悄悄完成了类型检查,但因为配置不让它输出文件,所以没有任何可见结果。
下面是具体的解决步骤:
修改
noEmit配置
把"noEmit": true改成"noEmit": false,这样TypeScript就会按照你设置的outDir输出编译后的文件了。毕竟你特意加了outDir,肯定是希望生成编译产物的对吧?
补充一下:Create React App生成的默认tsconfig.json会设置noEmit: true,因为CRA本身用Babel负责打包编译,只让tsc做类型检查。你现在想直接用tsc编译,这个配置必须调整。修正
include路径
你的include设置是["./src/*"],这个只会匹配src目录下的直接文件,不会包含子目录里的文件。建议改成["./src/**/*"],这样能递归匹配src下所有文件和子目录的文件,避免遗漏部分代码。验证效果
保存修改后的tsconfig.json,重新运行tsc。这时候应该能看到dist目录生成对应的编译文件了。如果还是不确定,可以运行tsc --verbose查看详细日志,它会告诉你TypeScript正在处理哪些文件、有没有输出产物。
另外,VSCode的Ctrl+Shift+B没结果也是一样的原因——它基于你的tsconfig执行编译,noEmit: true导致没有输出,所以看起来没反应。改完配置后再试试这个命令应该就正常了。
内容的提问来源于stack exchange,提问作者Prunus Nira




