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

Node.js创建两个Worker Threads仅一个运行,添加延迟恢复正常的原因

问题原因分析

这本质是ts-node-dev的热重载机制和Worker线程初始化时机的冲突,具体逻辑如下:

  • ts-node-dev启动主进程时,会实时监视项目文件的变化,一旦检测到依赖文件变更(包括新加载的文件),就会触发主进程重启。
  • 当你连续快速创建两个Worker线程时,第二个Worker的入口文件(analyze-caption-job.ts)会被ts-node-dev识别成主进程的新增依赖,触发主进程重启——这时候第一个Worker还没完成初始化就被终止了,只有第二个Worker能在重启后的主进程里正常启动,所以你只能看到它的输出。
  • 加5秒延迟后,主进程的初始依赖扫描已经完成,ts-node-dev的监视状态趋于稳定,这时候再启动第二个Worker,不会被误判成依赖变更,两个Worker都能正常存活并输出内容。
可行的解决办法
  • 给ts-node-dev加--ignore参数,排除Worker线程的文件,避免被误监视:
    npx ts-node-dev --ignore 'analyze-caption-job.ts' --ignore 'youtube-metadata-job.ts' cron.ts
    
  • 使用--no-deps参数关闭依赖监视,只监视主文件的变化:
    npx ts-node-dev --no-deps cron.ts
    
  • 先把所有TypeScript文件编译成JavaScript,再直接用node运行主文件,彻底绕过ts-node-dev的热重载逻辑:
    tsc && node cron.js
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 09:34:56