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

无法为项目添加@spartacus/schematics,运行命令报读取'kind'未定义错误

解决Spartacus V4与新环境不兼容引发的Cannot read properties of undefined (reading 'kind')错误

问题根源

Spartacus V4的官方兼容范围不覆盖Angular CLI 15和Node.js 18,版本不匹配触发了AST解析时的未定义属性调用错误。

解决办法

1. 降级环境到兼容版本

Spartacus V4要求Node.js 14.x/16.x、Angular CLI 12.x,按以下步骤操作:

  • 卸载全局Angular CLI:npm uninstall -g @angular/cli
  • 安装指定版本CLI:npm install -g @angular/cli@12.2.18
  • 切换Node.js版本到14.x或16.x(推荐用nvm管理版本)
  • 重新同步项目依赖,确保package.json里所有Angular相关包版本统一为12.x

2. 升级Spartacus到适配当前环境的版本

升级到Spartacus v6.x及以上(支持Angular 15和Node.js 18):

  • 卸载旧版依赖:npm remove @spartacus/core @spartacus/storefront @spartacus/schematics
  • 安装适配版本:npm install @spartacus/core@6.2.0 @spartacus/storefront@6.2.0 @spartacus/schematics@6.2.0
  • 运行迁移命令处理版本差异:ng update @spartacus/schematics@6.2.0
  • 注意:升级后要检查自定义代码,适配新版本的API变更

3. 临时补丁(仅用于测试,不推荐生产)

如果暂时无法升降级,可临时修改依赖文件:

  • 找到node_modules/@spartacus/schematics/src/utils/ast-utils.ts(或负责AST解析的对应文件)
  • 在访问kind属性前加空值判断,比如:
    if (node?.kind === ...) {
      // 原有逻辑
    }
    
  • 该方法会在重新安装依赖后失效,仅做临时测试用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 10:07:31