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

Angular 17执行Karma单元测试报错:找不到NodeJS命名空间

解决Angular 17单元测试中"Cannot find namespace 'NodeJS'"错误

问题原因

Angular单元测试使用独立的tsconfig.spec.json配置文件,你之前修改的tsconfig.json和tsconfig.app.json仅作用于应用代码,不覆盖测试环境的TypeScript配置,导致测试时无法识别NodeJS类型。

解决方案

方案1:修改测试环境的TypeScript配置

找到项目根目录下的tsconfig.spec.json,在compilerOptions.types数组中添加"node":

{
  "extends": "./tsconfig.json",
  "compilerOptions": {
    "outDir": "./out-tsc/spec",
    "types": [
      "jasmine",
      "node"
    ]
  },
  "include": [
    "src/**/*.spec.ts",
    "src/**/*.d.ts"
  ]
}

方案2:确保安装@types/node依赖

如果未安装Node.js类型定义包,执行以下命令安装:

npm install --save-dev @types/node

方案3:直接导入类型(无需全局配置)

在组件代码中直接导入Timeout类型,替代全局的NodeJS.Timeout:

import { Component } from '@angular/core';
import { RouterOutlet } from '@angular/router';
import type { Timeout } from 'node.js';

@Component({
  selector: 'app-root',
  standalone: true,
  imports: [RouterOutlet],
  templateUrl: './app.component.html',
  styleUrl: './app.component.scss',
})
export class AppComponent {
  title = 'angular-tour-of-heroes';
  nodeJsTimeout: Timeout | null = null;
}

修改完成后重新执行npm run test即可解决问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 22:44:55