首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将jszip包含在requirejs中:未定义jszip

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

Stack Overflow用户
提问于 2015-09-12 12:52:17
回答 3查看 7.6K关注 0票数 1

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

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

代码语言:javascript
复制
Uncaught TypeError: jszip is not a function

Config需求:

代码语言:javascript
复制
<script type="text/javascript">
  requirejs.config({
    paths : {
      jszip : '../tools/jszip'
    }
  });
</script>

下面是我如何在JS文件中使用它:

代码语言:javascript
复制
define(['jszip', '../tools/xlsx'], function(jszip, xlsx) {
  ...
}
EN

回答 3

Stack Overflow用户

发布于 2016-01-05 17:09:51

JSZip (和ODS支持ods扩展)必须在加载XLSX之前加载并附加到窗口。我正在使用带有自定义“xlsx加载程序”的shim使其工作:

main.js

代码语言:javascript
复制
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']
        }
    }
});

xlsx-loader.js

代码语言:javascript
复制
define(['jszip', 'ods'], function (jszip, ods) {
    "use strict";

    window.JSZip = jszip;
    window.ODS = ods;
});

您的JS文件

代码语言:javascript
复制
define(['xlsx'], function () {
    // Do what you want with XLSX
    ...

选项2)您也可以实现这个链接要求,它不需要任何垫片,但不使用优化器

代码语言:javascript
复制
require(['jszip', 'ods'], function (jszip, ods) {
    window.JSZip = jszip;
    window.ODS = ods;
    require(['xlsx'], function () {
        // Do what you want with XLSX
        ...
    });
});
票数 10
EN

Stack Overflow用户

发布于 2015-10-01 13:40:06

如果打开xlsx.js,就会看到使用了一个名为jszip的全局变量,它实际上填充了JSZip的值。所以如果你像这样改变你的函数定义

代码语言:javascript
复制
define(['jszip', '../tools/xlsx'], function(JSZip , xlsx) { 

我想这应该管用

票数 -1
EN

Stack Overflow用户

发布于 2017-07-14 07:41:29

您必须将lib var定义为构造函数的名称。

就我的情况而言,我也有同样的问题:

代码语言:javascript
复制
define("Statistics", ["jquery", "underscore", "Datatable", "moment", "jszip"], function($, _, Datatable, moment, jszip) {

将jszip改为JSZip,如下所示:

代码语言:javascript
复制
define("Statistics", ["jquery", "underscore", "Datatable", "moment", "jszip"], function($, _, Datatable, moment, JSZip) {
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32539040

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档