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

已在global.d.ts声明users属性 ts-node运行仍报Global类型不存在该属性

问题原因
  • ts-node运行时默认不会自动加载项目内自定义的.d.ts类型声明文件,只会编译tsconfig.json配置的include范围内的文件。VSCode智能提示会扫描整个工作区的声明文件,所以本地编辑时无报错,但ts-node编译阶段没有读取到global.d.ts的定义,因此识别不到global上的users属性。
  • 新版TypeScript的全局类型同时兼容NodeJS的Global接口和标准globalThis,仅声明NodeJS.Global的扩展没有同步覆盖globalThis的类型,也会触发校验报错。
解决方法

1. 补全全局类型声明

修改global.d.ts内容,同时覆盖NodeJS.Global和全局变量声明,末尾添加export {}将文件标记为模块,避免全局声明失效:

// global.d.ts
import type { User } from "./src/server/classes/User";

declare global {
  namespace NodeJS {
    interface Global {
      users: Record<string, User>
    }
  }

  var users: Record<string, User>;
}

export {}

2. 调整tsconfig.json配置

将自定义声明文件加入编译范围,同时指定类型根目录:

{
  "compilerOptions": {
    // 保留你原有的其他配置
    "typeRoots": ["./node_modules/@types", "./"]
  },
  "include": ["global.d.ts", "src/**/*"],
  // 新增ts-node专属配置,强制加载include内的所有文件
  "ts-node": {
    "files": true
  }
}

3. 验证生效

配置完成后直接运行原有ts-node启动命令即可,无需额外加参数。如果还是报错,可以手动执行带参数的启动命令排查:

ts-node --files src/server/index.ts

内容的提问来源于stack exchange,提问作者Sharif Velásquez Alzate

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 19:03:02