Javascript 如何在requirejs中包含jszip:jszip没有定义
我正在使用这个库用JavaScript创建一个Excel文件 此库使用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'
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加载程序“正确”地完成了它。