有个JS生成Excel的代码,走到一半就出现这个错误了。
刚接触JS,proxy是啥啊?这个proxy错误怎么看什么原因啊?
/**
* LWC导出Excel格式文件
*/
import { LightningElement, api } from "lwc";
import { loadScript } from "lightning/platformResourceLoader";
import workbook from "@salesforce/resourceUrl/xlsx";
export default class ExportToXlsxService extends LightningElement {
@api headerList;
@api filename;
@api worksheetNameList;
@api sheetData;
librariesLoaded = false;
renderedCallback() {
console.log("ExportToXlsxService renderedCallback xlsx");
if (this.librariesLoaded) return;
this.librariesLoaded = true;
Promise.all([loadScript(this, workbook + "/xlsx/xlsx.full.min.js")])
.then(() => {
console.log("loadScript xlsx success");
})
.catch(error => {
console.log("loadScript xlsx failure");
});
}
@api download() {
console.log('%c--> 开始生成Excel....', 'color: green');
const XLSX = window.XLSX;
let xlsData = this.sheetData;
let xlsHeader = this.headerList;
let ws_name = this.worksheetNameList;
let createXLSLFormatObj = Array(xlsData.length).fill([]);
//let xlsRowsKeys = [];
/* form header list */
xlsHeader.forEach((item, index) => createXLSLFormatObj[index] = [item])
/* form data key list */
xlsData.forEach((item, selectedRowIndex) => {
console.log('%c--> 正在生成Excel....', 'color: green');
let xlsRowKey = Object.keys(item[0]);
console.log('%c--> 49 行 过....', 'color: green');
item.forEach((value, index) => {
var innerRowData = [];
xlsRowKey.forEach(item => {
innerRowData.push(value[item]);
})
createXLSLFormatObj[selectedRowIndex].push(innerRowData);
})
});
console.log('%c--> 58 行 过....', 'color: green');
/* creating new Excel */
var wb = XLSX.utils.book_new();
console.log('%c--> 62 行 过....', 'color: green');
/* creating new worksheet */
var ws = Array(createXLSLFormatObj.length).fill([]);
for (let i = 0; i < ws.length; i++) {
/* converting data to excel format and puhing to worksheet */
let data = XLSX.utils.aoa_to_sheet(createXLSLFormatObj[i]);
ws[i] = [...ws[i], data];
/* Add worksheet to Excel */
XLSX.utils.book_append_sheet(wb, ws[i][0], ws_name[i]);
}
console.log('%c--> 74 行 过....', 'color: green');
/* Write Excel and Download */
XLSX.writeFile(wb, this.filename);
console.log('%c--> 77 行 过....', 'color: green');
const OffSpinnerSwitch = new CustomEvent('downloadfinish', {
detail: false
});
this.dispatchEvent(OffSpinnerSwitch);
}
}
报错信息,只能看出Proxy报错,分析不出具体原因,你可以把使用到的插件和代码粘贴出来看看
1.Proxy是js es6标准里一个监听数据变化的api
2.如果你需要 Excel表格导出 我个给你实现一个 要说出你的需求
Proxy有个箭头,你点开看看详细错误?需要安装office2007?
Proxy是ES6中提供的新的API,
可以用来定义对象各种基本操作的自定义行为 (在文档中被称为traps,我觉得可以理解为一个针对对象各种行为的钩子),
拿它可以做很多有意思的事情,在我们需要对一些对象的行为进行控制时将变得非常有效。
详细介绍:
报错原因
对象属性不存在,或者对象的行为不存在,都会导致这个错误 或者接受到的数据不正确
你需要看下控制台和API接口返回结果是否还有其他报错来进行分析。