vue 后台返回文件流,为什么前台导出 Excel 报 Uncaught (in promise) 服务端执行出错?

前端分装的方法:

import FileSaver from 'file-saver';

/**

* 导出xlsx

* @param {Array<Object>} data // 导出的数据

* @param {String} fileName // 文件名

* @param {Array<String>} columns // 表头对应的字段

* @param {Array<String>} headers // 表头名称,不传则为columns

*/

export const saveDataAsXlsx = (data, fileName, columns, headers) => {

// eslint-disable-next-line no-debugger

debugger;

const prefix = '\uFEFF';

const rowDelimiter = '\n'; // 默认行分隔符 '\n'

if (!headers) headers = columns;

let exportContent = prefix + headers.join(',') + '\n';

for (const i in data) {

for (const c in columns) {

let col = data[i][columns[c]] + '' || ' ';

col = col.replace(new RegExp(rowDelimiter, 'g'), ' ');

exportContent += `"\t${col}",`;

}

exportContent += '\n';

}

const blob = new Blob([exportContent], { type: 'application/vnd.ms-excel;charset = utf-8' });

FileSaver.saveAs(blob, fileName);

};

页面调用

handleExportExcel() {

const fileStream = getOrganExport({ parentId: this.nodeId });

console.log(fileStream);

saveDataAsXlsx(fileStream, 'lala.xlsx', ['name', 'typeName'], ['名称', '类型']);

},

控制台报错信息
vue 后台返回文件流,为什么前台导出 Excel 报 Uncaught (in promise) 服务端执行出错?
打断点信息
vue 后台返回文件流,为什么前台导出 Excel 报 Uncaught (in promise) 服务端执行出错?
后台返回的文件流
vue 后台返回文件流,为什么前台导出 Excel 报 Uncaught (in promise) 服务端执行出错?
哪里写错了,一直不对


回答:

你的fileStream是一个pending状态的promise,并不是真实的请求结果,你需要把handleExportExcel改造为async...await函数,或者使用getOrganExport().then(fileStream => saveDataAsXlsx(fileStream, 'lala.xlsx', ['name', 'typeName'], ['名称', '类型']))的形式

以上是 vue 后台返回文件流,为什么前台导出 Excel 报 Uncaught (in promise) 服务端执行出错? 的全部内容, 来源链接: utcz.com/p/933143.html

回到顶部