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

升级NX Angular Monorepo至18.2.7后构建报错:无法解析MatLegacyDialogModule

解决NX Angular Monorepo升级后MatLegacyDialogModule解析错误的方案

核心原因

Angular 18已完全移除对Angular Material Legacy组件的支持,你的代码中仍在引用MatLegacyDialogModule这类遗留模块,同时升级后的@ngtools/webpack Ivy编译器无法识别已废弃的Legacy实体类型,导致构建失败。

具体修复步骤

  • 替换Legacy模块为最新Material组件

    1. 遍历所有引用MatLegacyDialogModule的文件(模块导入、组件注入代码处),将其替换为MatDialogModule
    2. 同步替换相关服务与类型:把MatLegacyDialog换成MatDialog,MatLegacyDialogRef换成MatDialogRef
      代码示例:
      原代码:
    import { MatLegacyDialogModule } from '@angular/material/legacy-dialog';
    import { MatLegacyDialog } from '@angular/material/legacy-dialog';
    

    替换后:

    import { MatDialogModule } from '@angular/material/dialog';
    import { MatDialog } from '@angular/material/dialog';
    
  • 清理依赖与缓存

    1. 卸载所有Material Legacy相关包:
      npm uninstall @angular/material/legacy-dialog @angular/material/legacy-*
      
    2. 清理NX和npm缓存:
      nx reset
      npm cache clean --force
      
    3. 重新安装依赖:
      npm install
      
  • 同步Workspace配置与依赖版本

    1. 检查nx.json和项目的project.json,确认Angular版本已更新至18.2.7,且@angular/material版本与Angular版本完全匹配(Angular 18对应Material 18)
    2. 运行NX迁移命令修复版本不兼容问题:
      nx migrate --run-migrations
      
  • 验证修复效果

    1. 执行lint检查排查剩余Legacy模块引用:
      nx lint <你的项目名称>
      
    2. 尝试构建项目确认错误消除:
      nx build <你的项目名称>
      

内容的提问来源于stack exchange,提问作者Siva Kumar S

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 09:57:33