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

Angular15调用导入类方法时出现Cannot read properties of undefined错误

Angular 15 中 CryptoJS 未定义问题排查

先给结论:构造函数触发调用不是直接原因

构造函数里间接触发调用本身不会让 CryptoJS 变成 undefined,问题大概率出在导入方式或者依赖加载环节。

最可能的问题:导入方式错误

crypto-js 的导出结构是默认导出,而非命名导出,你当前用的 import { CryptoJS } from 'crypto-js' 无法正确获取到目标对象,自然会出现 undefined 报错。改成以下导入方式即可:

import CryptoJS from 'crypto-js';

其他排查方向

  • 检查依赖完整性:执行 npm list crypto-js 确认依赖是否存在,若缺失或版本异常,重新安装:npm install crypto-js --save。
  • 调整初始化时机:如果 AuthenticationService 在模块中被过早初始化(比如在 APP_INITIALIZER 之前),可能导致 CryptoJS 未加载完成就被调用。可以把 setCookies 的触发逻辑从构造函数移到组件的 ngOnInit 生命周期钩子中。
  • 验证导入有效性:在 AuthenticationService 顶部添加 console.log(CryptoJS),若输出 undefined,说明导入问题;若输出正常对象,再排查是否有其他代码意外覆盖了 CryptoJS。

修复后代码示例

// 替换原导入语句
import CryptoJS from 'crypto-js';

// 在 setCookies 方法中正常调用
const hmacResult = CryptoJS.HmacSHA1(currentUser, '你的密钥').toString();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 09:52:07