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

Angular注入AnalyticsService报错Uncaught TypeError读取undefined属性

Angular服务注入报错Uncaught TypeError: Cannot read properties of undefined (reading '<Class>')原因排查

问题场景

在Angular项目中将服务注入到另一服务时触发上述错误,本次报错出现在注入AnalyticsService后,日志显示其他关联模块也受影响,对应业务代码如下:

import { AnalyticsService } from '@s4y/elements/event-log-control';
import { catchError } from 'rxjs/operators';
import { Injectable } from '@angular/core';

import { AngularFireFunctions } from '@angular/fire/compat/functions';

/**
 * Interface with the firebase backend.
 */
@Injectable({ providedIn: 'root' })
export class BackendService
{
  constructor(private _fns: AngularFireFunctions, private _log: AnalyticsService) { }

  /**
   * Call Firebase Cloud Function
   *
   * @param fName:  Function Name
   * @param params: Function Parameter Object
   */
  callFunction(fName: string, params: any) {
    const toCall = this._fns.httpsCallable(fName);

    // const serviceLoader = ServiceLocator.injector.get(AnalyticsService)

    return toCall(params)
      .pipe(catchError
        (error => {
        // Getting the Error details.
        const code = error.code;
        const  message = error.message;
        const  details = error.details;

        console.log(JSON.stringify(error))
        // Do the logging!!!
        // this._analytics.logEvent()
        // console.l/og('error')
        // serviceLoader.logEvent({name: fName,info:{description: e, data:{params: params}}});
        // throw errors on cloud functions live

        // check if error http 500/ 400/ 301 /
        
        throw error;
      }));
  }

}

错误日志

错误日志截图

常见触发原因

  • 循环依赖:这是该类报错最高发的原因。如果AnalyticsService自身(或其依赖链上的某个服务)反过来注入了BackendService,会形成依赖闭环,Angular依赖注入容器无法按顺序完成实例化,拿到的服务引用为undefined,读取类属性时就会抛出该错误。可以通过Injector延迟获取依赖、或重构服务逻辑拆分公共依赖打破循环。
  • 服务未正确注册到依赖注入容器:@s4y/elements/event-log-control包导出的AnalyticsService没有配置providedIn规则,也没有被加入到对应根模块/特性模块的providers数组中,容器无法找到对应的服务实例。
  • 导入异常:导入AnalyticsService的路径拼写错误、第三方包入口文件导出配置错误,会导致运行时实际导入的AnalyticsService值为undefined,注入阶段直接报错。
  • 版本兼容/编译异常:@s4y/elements包和当前项目使用的Angular大版本不匹配,或包构建时未适配Ivy编译规则,会导致服务类在运行时解析为undefined;如果项目构建配置的摇树优化规则错误,误将AnalyticsService代码剔除也会触发同类问题。
  • 初始化时序问题:如果AnalyticsService依赖的前置服务在APP_INITIALIZER阶段未完成初始化就被提前引用,也会出现类引用为undefined的报错,这类场景一般会在控制台伴随其他provider初始化相关的警告信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 16:21:32