You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用tsx --watch时重复出现'Restarting server/server.js'消息的解决方法

解决tsx --watch重复输出'Restarting'消息的问题

问题场景

在package.json的scripts中配置了使用concurrently同时启动tsx监听服务端文件和vite前端服务:

"scripts": {
  "dev": "concurrently \"tsx --watch server/server.js\" \"vite --port=3000 --host --open\""
}

执行pnpm run dev后服务正常运行,但控制台会大量重复输出:

[0] Restarting 'server/server.js'.
[0] Restarting 'server/server.js'.
...

原因分析

这种重复重启通常是因为tsx监听的文件被进程自身修改,触发了无限循环重启:

  • 比如服务端代码运行时生成的日志、临时文件,或编译产物被放在了tsx监听的目录下
  • 也可能是tsx默认监听当前目录所有文件变更,包括node_modules或其他无关文件的变动(相对少见)

解决方法

方法1:精准控制tsx监听的文件范围

给tsx添加--include或--exclude参数,只监听需要的服务端文件,排除无关目录:

"scripts": {
  "dev": "concurrently \"tsx --watch --include 'server/**/*.{ts,js}' server/server.js\" \"vite --port=3000 --host --open\""
}

或者直接排除不需要监听的目录:

"scripts": {
  "dev": "concurrently \"tsx --watch --exclude 'node_modules/**,logs/**' server/server.js\" \"vite --port=3000 --host --open\""
}

方法2:调整服务端文件写入路径

如果服务端代码有写入文件到server目录的逻辑(比如生成日志、缓存),把这些文件输出到项目根目录的独立文件夹(如./logs、./temp),并确保该文件夹不在tsx监听范围内。

方法3:兼容旧版本tsx的参数

部分tsx旧版本使用--ignore-watch替代--exclude,可以尝试:

"scripts": {
  "dev": "concurrently \"tsx --watch --ignore-watch node_modules,logs server/server.js\" \"vite --port=3000 --host --open\""
}

方法4:临时屏蔽重复输出(治标不治本)

如果暂时找不到触发重启的根源,可以先关闭tsx的重复日志输出:

"scripts": {
  "dev": "concurrently \"tsx --watch --clear-screen=false server/server.js\" \"vite --port=3000 --host --open\""
}

验证

修改配置后重新执行pnpm run dev,观察控制台是否还会重复输出重启消息。若问题依旧,检查项目中是否有其他工具(如自动格式化、文件同步工具)在修改server目录下的文件。

内容的提问来源于stack exchange,提问作者Michael

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 23:15:05