TypeScript项目中tsc -w与nodemon单命令执行失效问题求助
解决TypeScript项目中同时监听编译与启动服务器的问题
我来帮你排查下问题根源,再给出可行的解决方案:
为什么你的现有命令无法正常工作?
- dev1命令问题:你用
&&连接两个命令,但tsc -w是持续运行的监听进程,它永远不会主动退出,导致后面的nodemon根本没有执行机会,所以你只能看到tsc的日志。 - dev2命令问题:这个命令失效大概率是因为你还没安装
concurrently依赖(它不是Node.js自带工具),或者引号格式在你的操作系统下存在兼容性问题。另外,即使安装了concurrently,若没有正确配置进程输出,也可能看不到nodemon的日志。
正确的解决方案
方案一:使用concurrently(推荐)
这是最高效的方式,能同时运行两个持续进程并分别输出日志:
- 先安装concurrently开发依赖:
npm install --save-dev concurrently - 修改package.json中的scripts为:
如果你想先完成一次完整编译,再启动监听和服务器,可以调整为:"dev": "concurrently \"tsc -w\" \"nodemon ./.build/src/app.js\""
运行后你会看到两个进程的日志(通常用不同颜色区分),既能监控tsc的编译状态,也能看到nodemon的服务器启动日志。"dev": "tsc && concurrently \"tsc -w\" \"nodemon ./.build/src/app.js\""
方案二:用nodemon直接触发编译(无需额外工具)
如果你不想引入新工具,可以让nodemon监听TypeScript文件变化,每次变更时先执行编译再重启服务器:
"dev": "nodemon --watch src --ext ts --exec \"tsc && node ./.build/src/app.js\""
这个方案不需要额外安装依赖,但每次文件变化都会执行完整编译,效率略低于concurrently,适合小型项目使用。
额外注意事项
- 确保你的tsconfig.json中
outDir配置正确指向.build/src,保证编译后的文件输出到指定目录。 - 如果你使用Windows系统,scripts中的引号可能需要调整为单引号,或者转义双引号,比如:
"dev": "concurrently 'tsc -w' 'nodemon ./.build/src/app.js'"
内容的提问来源于stack exchange,提问作者DEEPESH KUMAR R
相关产品推荐
相关产品推荐

