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

如何解决AngularJS中ExcelJS报错Cannot read properties of undefined (reading 'Workbook')

问题根因

你遇到的报错核心是AMD模块加载为异步执行:你将ExcelJS实例化的逻辑写在了define回调函数外部,代码执行到const workbook = new ExcelJS.Workbook()时,define的异步加载回调还未触发,ExcelJS变量仍为undefined,因此无法调用构造函数。

解决方法

  1. 将所有ExcelJS相关的操作逻辑全部移入define的回调函数内部,确保模块加载完成后才执行后续操作,修正后代码参考:
$scope.export = function() {
    $scope.filename = 'Owlink by Tessi.csv';
    $scope.title = 'Owlink by Tessi';
    const reclamationListResult = [];
    const header = ['Produit', 'Famille', 'Typologie', 'Date de création'];
    const titleRowCell = 'A1:R1';
    
    define(['require', 'ExcelJS'], function (require) {
       const ExcelJS = require('exceljs/excel.js');
       // 所有ExcelJS相关操作都放在回调内部
       const workbook = new ExcelJS.Workbook();
       const worksheet = workbook.addWorksheet('Sharing Data');
       const colsSizeMap = new Map([
         ['1', '20'],
         ['2', '20'],
         ['3', '20'],
         ['4', '20']
       ]);
       // 后续剩余的表格填充、导出逻辑也写在这里
    });
}
  1. 检查项目中AMD加载器(一般为RequireJS)的路径配置,确认ExcelJS别名指向的文件路径正确,能匹配到bower_components或node_modules中安装的ExcelJS对应入口文件。
  2. 如果你不想用异步加载的方式,也可以直接在项目的index.html中通过<script>标签全局引入ExcelJS的压缩包文件,引入后全局作用域会直接存在ExcelJS对象,不需要再用define异步加载即可直接使用。

内容的提问来源于stack exchange,提问作者slema imen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 18:57:03