我正在使用js-xlsx库在JavaScript中创建一个Excel文件。
这个库使用jszip。在加载jszip之前,我试图在JavaScript文件中定义jszip库,但从未定义过jszip:
Uncaught TypeError: jszip is not a functionConfig需求:
<script type="text/javascript">
requirejs.config({
paths : {
jszip : '../tools/jszip'
}
});
</script>下面是我如何在JS文件中使用它:
define(['jszip', '../tools/xlsx'], function(jszip, xlsx) {
...
}发布于 2016-01-05 17:09:51
JSZip (和ODS支持ods扩展)必须在加载XLSX之前加载并附加到窗口。我正在使用带有自定义“xlsx加载程序”的shim使其工作:
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']
}
}
});xlsx-loader.js
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)您也可以实现这个链接要求,它不需要任何垫片,但不使用优化器
require(['jszip', 'ods'], function (jszip, ods) {
window.JSZip = jszip;
window.ODS = ods;
require(['xlsx'], function () {
// Do what you want with XLSX
...
});
});发布于 2015-10-01 13:40:06
如果打开xlsx.js,就会看到使用了一个名为jszip的全局变量,它实际上填充了JSZip的值。所以如果你像这样改变你的函数定义
define(['jszip', '../tools/xlsx'], function(JSZip , xlsx) { 我想这应该管用
发布于 2017-07-14 07:41:29
您必须将lib var定义为构造函数的名称。
就我的情况而言,我也有同样的问题:
define("Statistics", ["jquery", "underscore", "Datatable", "moment", "jszip"], function($, _, Datatable, moment, jszip) {将jszip改为JSZip,如下所示:
define("Statistics", ["jquery", "underscore", "Datatable", "moment", "jszip"], function($, _, Datatable, moment, JSZip) {https://stackoverflow.com/questions/32539040
复制相似问题