如何在requirejs中包含jszip:未定义jszip

waw*_*los 1 javascript excel xlsx requirejs js-xlsx

我正在使用js-xlsx库在JavaScript中创建Excel文件.

这个库使用jszip.我尝试jszip在加载之前在我的JavaScript文件中定义库,jszip但从jszip未定义过:

Uncaught TypeError: jszip is not a function
Run Code Online (Sandbox Code Playgroud)

配置requirejs:

<script type="text/javascript">
  requirejs.config({
    paths : {
      jszip : '../tools/jszip'
    }
  });
</script>
Run Code Online (Sandbox Code Playgroud)

以下是我在JS文件中使用它的方法:

define(['jszip', '../tools/xlsx'], function(jszip, xlsx) {
  ...
}
Run Code Online (Sandbox Code Playgroud)

Fed*_*ron 10

在加载XLSX之前,必须加载JSZip(以及支持ods扩展的ODS)并将其附加到窗口.我正在使用带有自定义"xlsx-loader"的垫片工作:

main.js

requirejs.config({
    paths: {
        ods: '...path to ods',
        jszip: '...path to jszip',
        xlsxloader: '...path to xlsx-loader',
        xlsx: '...path to xlsx'
    },
    shim: {
        xlsx: {
            exports: 'XLSX',
            deps: ['xlsxloader']
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

XLSX,loader.js

define(['jszip', 'ods'], function (jszip, ods) {
    "use strict";

    window.JSZip = jszip;
    window.ODS = ods;
});
Run Code Online (Sandbox Code Playgroud)

你的JS文件

define(['xlsx'], function () {
    // Do what you want with XLSX
    ...
Run Code Online (Sandbox Code Playgroud)

选项2)您也可以实现此链接要求,它不需要任何填充程序但不适用于优化程序

require(['jszip', 'ods'], function (jszip, ods) {
    window.JSZip = jszip;
    window.ODS = ods;
    require(['xlsx'], function () {
        // Do what you want with XLSX
        ...
    });
});
Run Code Online (Sandbox Code Playgroud)