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

JS文件出现TypeScript错误:zeromq模块报错求助

问题

Node.js项目使用如下tsconfig配置,执行node -r ts-node/register server.ts --development启动时,node_modules\zeromq\lib\index.js触发两个TypeScript错误:

  • 第755行:export.Context不存在
  • 第19行:zmqVersion()不是函数

已做尝试:

  • 配置exclude: ["./node_modules"],执行npx tsc --listFiles未列出node_modules下的文件,但zeromq仍报错
  • 安装了@types/zeromq
  • 尝试添加checkJs: false、skipLibCheck: true等tsconfig配置,无效
  • 项目之前可正常运行,未手动更新过依赖包

附tsconfig配置:

{
  "compilerOptions": {
    "outDir": "./distTemp/",
    "sourceMap": true,
    "noImplicitAny": false,
    "module": "commonjs",
    "target": "es6",
    "jsx": "react",
    "allowJs": true,
    "moduleResolution": "node",
    "esModuleInterop": true,
    "allowSyntheticDefaultImports": true,
    "suppressImplicitAnyIndexErrors": true,
    "checkJs": false,
    "skipLibCheck": true,
    "skipDefaultLibCheck": true,
    "types": ["zeromq"]
  },
  "ts-node": {
    "esm": true
  },
  "lib": ["esnext"],
  "paths": [
    "global.d.ts"
  ],
  "include": ["./src", "./server.ts"],
  "exclude": ["./node_modules", "./build", "./dist", "./src/**/*.js", "./src/**/*.jsx"]
}
排查方向
  1. ts-node的ESM模式冲突:ts-node配置了"esm": true,但项目compilerOptions里module是commonjs,两种模块模式混合解析时,zeromq的CommonJS模块可能出现类型识别异常。
  2. ts-node对依赖文件的检查逻辑:即使tsc忽略node_modules,ts-node在处理被项目引入的依赖JS文件时,可能绕过exclude规则触发类型检查,尤其是开启allowJs: true的情况下。
  3. @types/zeromq版本不匹配:即使没手动更新依赖,lock文件损坏或重新安装时可能拉取了与zeromq主包不兼容的@types版本。
修复方案

方案1:关闭ts-node的ESM模式

因为项目使用commonjs模块,将ts-node的ESM配置改为false:

"ts-node": {
  "esm": false
}

方案2:让ts-node明确忽略node_modules

在ts-node配置中添加ignore规则,强制跳过node_modules下的文件:

"ts-node": {
  "esm": true, // 若需要保留ESM模式
  "ignore": ["node_modules"]
}

方案3:对齐@types/zeromq与zeromq版本

  1. 查看当前zeromq版本:
npm list zeromq
  1. 安装对应版本的@types包,例如zeromq是6.x版本则安装@types/zeromq@6:
npm install @types/zeromq@<对应版本号> --save-dev
  1. 清理依赖后重新安装:
rm -rf node_modules package-lock.json
npm install

方案4:收紧include规则

将include改为只包含TypeScript文件,避免ts-node误处理JS文件:

"include": ["./src/**/*.ts", "./src/**/*.tsx", "./server.ts"]
验证

修改配置后重新执行启动命令:

node -r ts-node/register server.ts --development

如果仍报错,可尝试用--skip-project临时跳过tsconfig检查,确认是否为配置冲突:

node -r ts-node/register --skip-project server.ts --development

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 03:30:51