Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在requirejs中包含jszip:jszip没有定义_Javascript_Excel_Requirejs_Xlsx_Js Xlsx - Fatal编程技术网

Javascript 如何在requirejs中包含jszip:jszip没有定义

Javascript 如何在requirejs中包含jszip:jszip没有定义,javascript,excel,requirejs,xlsx,js-xlsx,Javascript,Excel,Requirejs,Xlsx,Js Xlsx,我正在使用这个库用JavaScript创建一个Excel文件 此库使用jszip。在加载jszip之前,我试图在JavaScript文件中定义jszip库,但从未定义过jszip: Uncaught TypeError: jszip is not a function 配置要求js: <script type="text/javascript"> requirejs.config({ paths : { jszip : '../tools/jszip'

我正在使用这个库用JavaScript创建一个Excel文件

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

Uncaught TypeError: jszip is not a function
配置要求js:

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

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

define(['jszip', '../tools/xlsx'], function(JSZip , xlsx) { 

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

define(['jszip', '../tools/xlsx'], function(JSZip , xlsx) { 
它应该可以工作,我认为在加载XLSX之前,必须加载JSZip(以及支持ODS扩展的ODS)并将其连接到窗口。 我正在使用带有自定义“xlsx加载程序”的垫片使其正常工作:

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']
        }
    }
});
define(['jszip', 'ods'], function (jszip, ods) {
    "use strict";

    window.JSZip = jszip;
    window.ODS = ods;
});
xlsx loader.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']
        }
    }
});
define(['jszip', 'ods'], function (jszip, ods) {
    "use strict";

    window.JSZip = jszip;
    window.ODS = ods;
});
你的JS文件

define(['xlsx'], function () {
    // Do what you want with XLSX
    ...
选项2)您也可以根据需要实现此链接,它不需要任何垫片,但不与优化器配合使用

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

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']
        }
    }
});
define(['jszip', 'ods'], function (jszip, ods) {
    "use strict";

    window.JSZip = jszip;
    window.ODS = ods;
});
xlsx loader.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']
        }
    }
});
define(['jszip', 'ods'], function (jszip, ods) {
    "use strict";

    window.JSZip = jszip;
    window.ODS = ods;
});
你的JS文件

define(['xlsx'], function () {
    // Do what you want with XLSX
    ...
选项2)您也可以根据需要实现此链接,它不需要任何垫片,但不与优化器配合使用


您必须将lib变量定义为构造函数的名称

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

define("Statistics", ["jquery", "underscore", "Datatable", "moment", "jszip"], function($, _, Datatable, moment, jszip) {
我将jszip更改为jszip,如下所示:

define("Statistics", ["jquery", "underscore", "Datatable", "moment", "jszip"], function($, _, Datatable, moment, JSZip) {

您必须将lib变量定义为构造函数的名称

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

define("Statistics", ["jquery", "underscore", "Datatable", "moment", "jszip"], function($, _, Datatable, moment, jszip) {
我将jszip更改为jszip,如下所示:

define("Statistics", ["jquery", "underscore", "Datatable", "moment", "jszip"], function($, _, Datatable, moment, JSZip) {

你在这里展示的代码在功能上与我在答案中的代码没有什么不同。要定义的回调的第一个参数可以是
jszip
jszip
potato
flalala
,或者任何您想要的。您在这里显示的代码在功能上与我在回答中的代码没有什么不同。要定义的回调的第一个参数可以是
jszip
jszip
potato
flalala
,或者任何您想要的参数。谢谢。应该被标记为肯定的答案!你不仅解决了这个问题,而且用垫片和xlsx装载机“正确”地完成了。谢谢。应该被标记为肯定的答案!您不仅解决了这个问题,而且使用垫片和xlsx加载程序“正确”地完成了它。