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

使用TypeScript在worker_threads中出现模块未找到问题求助

TypeScript + worker_threads 模块未找到问题解决方法

问题根源

你使用NodeNext模块系统时,调用Worker('./counter.js')报错的核心原因:

  • 开发阶段用ts-node运行时,Worker加载的.js文件不存在(源文件是.ts),且ts-node不会自动编译Worker的入口文件
  • 编译后运行时,可能存在模块格式不匹配或路径解析的问题

分步解决方案

1. 开发环境(npm run dev)

修改index.ts,让Worker直接加载.ts源文件,并通过execArgv指定用ts-node处理:

import { Worker, isMainThread } from "worker_threads";

if (isMainThread) {
    const worker = new Worker('./counter.ts', {
        execArgv: ['--require', 'ts-node/register']
    });
    
    worker.on('message', (data) => console.log(data));
    worker.on('error', (err) => console.error(err));
}

2. 生产环境(npm run build + npm start)

确保编译后的文件路径正确,若仍报错可明确指定模块类型:

import { Worker, isMainThread } from "worker_threads";

if (isMainThread) {
    // 编译后counter.js和index.js在同一dist目录下,路径正确
    const worker = new Worker('./counter.js', {
        type: 'commonjs' // 匹配你的编译输出模块格式
    });
    
    worker.on('message', (data) => console.log(data));
    worker.on('error', (err) => console.error(err));
}

3. 统一模块配置优化(可选)

在package.json中添加"type": "module",让Node.js默认采用ES模块,同时调整tsconfig增强兼容性:

// package.json
{
  "name": "nodejs",
  "version": "1.0.0",
  "type": "module",
  "main": "dist/index.js",
  "scripts": {
    "start":"node dist/index.js",
    "build": "tsc",
    "dev":"ts-node src/index.ts",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "devDependencies": {
    "ts-node": "^10.9.1",
    "typescript": "^5.2.2"
  }
}
// tsconfig.json
{
    "compilerOptions": {
      "module": "NodeNext",
      "moduleResolution": "NodeNext",
      "target": "ES2020",
      "sourceMap": true,
      "outDir": "dist",
      "esModuleInterop": true
    },
    "include": ["src/**/*"],
  }

修改后,Worker的路径保持./counter.js即可正常运行。


验证

  • 开发环境:执行npm run dev,控制台应输出2000
  • 生产环境:先执行npm run build,再执行npm start,控制台应输出2000

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 16:47:10