在使用前段导出Word文件的时候,本地可以正常导出,但是到了线上之后,导出报错Uncaught Error: Error: Can't find end of central directory : is this a zip file ?查阅了很多资料均没有效果,包括给路径添加 '/',注释掉@mock等操作均无效后面通过一些方法得知可以使用
const response = await fetch(demoUrl); 来获取文件得以解决问题 完整代码如下
import docxtemplater from"docxtemplater";
import { saveAs } from"file-saver";
import PizZip from"pizzip";
export const exportWordDocx = async (demoUrl, docxData, fileName) => {
try {
const response = await fetch(demoUrl);
console.log("response", response)
if (!response.ok) {
throw new Error('Network response was not ok');
}
const content = await response.arrayBuffer();
const zip = new PizZip(content);
const doc = new docxtemplater().loadZip(zip);
doc.setOptions({
nullGetter: function () {
return "";
},
});
doc.setData({
...docxData,
});
try {
doc.render();
} catch (error) {
let e = {
message: error.message,
name: error.name,
stack: error.stack,
properties: error.properties,
};
console.log(JSON.stringify({ error: e }));
throw error;
}
const out = doc.getZip().generate({
type: "blob",
mimeType:
"application/vnd.openxmlformats-officedocument.wordprocessingml.document",
});
saveAs(out, fileName);
} catch (error) {
console.error('Error fetching template:', error);
}
};