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

Angular 8升级至9后编译成功但浏览器无法渲染,报TypeError错误

问题分析

控制台报错Uncaught TypeError: Cannot read properties of undefined (reading 'plugins'),说明代码执行时grapesjs对象为undefined,无法访问其plugins属性。这大概率是Angular 9升级后,第三方库grapesjs的模块加载方式或兼容性出现了问题。

解决方案

1. 调整grapesjs的导入方式

Angular 9的模块解析逻辑与Angular 8存在差异,默认导入可能无法正确识别grapesjs的UMD导出。将导入语句修改为命名空间导入:

// variable.ts
import {insertVariableCommand} from '../commands';
import * as grapesjs from 'grapesjs'; // 修改此处

export default grapesjs.plugins.add('insertVariables', (editor, options) => {
  // 原有代码保持不变
});

如果仍不生效,可以尝试在angular.json的scripts数组中直接引入grapesjs的本地脚本:

"scripts": [
  "./node_modules/grapesjs/dist/grapesjs.min.js"
]

2. 安装grapesjs的TypeScript类型定义

当前package.json中未包含grapesjs的类型定义,可能导致导入时类型解析异常。执行以下命令安装类型包:

npm install @types/grapesjs --save-dev

同时在tsconfig.json中确保启用默认导入支持:

{
  "compilerOptions": {
    "allowSyntheticDefaultImports": true
  }
}

3. 重新执行依赖安装与ngcc处理

Angular 9的Ivy编译器需要ngcc处理第三方库的兼容性,可能之前的postinstall脚本未正确执行。执行以下步骤:

  • 删除node_modules文件夹和package-lock.json文件
  • 重新安装依赖:npm install
  • 手动执行ngcc:npx ngcc

4. 验证grapesjs版本兼容性

当前使用的grapesjs@0.17.27可能与Angular 9的webpack 4.x存在兼容性问题。可以尝试切换到更稳定的版本测试:

# 降级到0.16.x稳定版
npm install grapesjs@~0.16.42 --save
# 或升级到适配webpack 4的0.18.x版本
npm install grapesjs@~0.18.4 --save

内容的提问来源于stack exchange,提问作者SHAHZEB HASSAN

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 22:07:01