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

TypeScript如何正确声明全局类型?使用时Node无报错崩溃是什么原因?

问题原因及解决方法

首先明确:你遇到的崩溃是TypeScript 编译阶段报错导致进程退出,还没到 Node.js 运行代码的阶段,因此不会抛出运行时错误栈,nodemon 检测到进程异常退出就会输出你看到的崩溃提示。

常见原因及对应解决方式

  • 原因1:tsconfig.json 未正确包含全局声明文件
    你的 global.d.ts 需要被 TS 编译器识别加载才会生效,检查 tsconfig.json 中的以下配置项:

    • include 数组要包含 global.d.ts 所在的路径,比如存放在项目根目录时配置为:
      {
        "include": ["src/**/*", "global.d.ts"]
      }
      
    • 如果你自定义了 typeRoots 配置,需要把全局声明文件所在的目录加入配置,否则 TS 默认只会读取 node_modules/@types 下的类型定义。
  • 原因2:ts-node 未加载未被引用的全局声明文件
    如果你用 nodemon + ts-node 的组合启动项目,ts-node 默认只会加载被业务代码 import 引入的文件,没有被任何文件引入的 global.d.ts 不会被自动加载,导致识别不到 AxiosConf 类型直接报错退出。
    解决方式二选一:

    1. 启动 ts-node 时添加 --files 参数,让它自动加载所有 tsconfig.json 中 include 配置的文件
    2. 在项目入口文件顶部添加引入代码:import './global.d.ts'
  • 原因3:存在其他未被捕捉的编译错误
    你可以直接在项目根目录执行 tsc --noEmit 命令,该命令会完整输出所有编译错误,你可以根据具体的错误信息定位问题,比如是否是 urlObj 本身的类型未定义、或者 axios 相关类型未安装等。

补充验证方式

你可以先把全局声明改成局部引入的方式测试:把 AxiosConf 的类型定义从 global.d.ts 移到用到该类型的业务文件顶部,如果此时项目能正常启动,就可以100%确认是全局声明文件未被正确加载的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 14:30:03