我是Web Worker的新手,现在我要做的是导入我在workerCode in Web Worker下创建的函数,但"import"和"importScript"都不起作用;只有XLSX库工作得很好,但其余的都不起作用.
你能帮我弄清楚怎么做吗?
export const consolidateWorkerV2 = () => {
const workerCode = `
/* Load standalone script from CDN */
import * as XLSX from "https://cdn.sheetjs.com/xlsx-0.20.1/package/xlsx.mjs";
import getDataRange from "../shared/util/GetDataRange";
import modifyWorksheet from "../shared/util/modifyWorksheet.js";
import headerStyling from "../shared/util/headerStyling";
self.addEventListener('message', async (e) => {
try {
const files = e.data.files;
const newWorkbook = XLSX.utils.book_new();
console.log("message received from main thread");
for (const [index, item] of files.entries()) {
const file = item.file;
const filename = item.file.name
const data = await item.file.arrayBuffer();
const workbook = XLSX.read(data);
for (const sheetName of workbook.SheetNames) {
if (newWorkbook.SheetNames.includes(journalType)) {
const duplicateSheetName = workbook.SheetNames[0];
const newWorksheet = newWorkbook.Sheets[journalType];
const dupWorksheet = getDataRange(workbook.Sheets[duplicateSheetName]);
const OPTIONS = { raw: false, defval: "", };
const parsedDupWorksheet = XLSX.utils.sheet_to_json(dupWorksheet, OPTIONS);
const updatedWorksheet = modifyWorksheet(dupWorksheet, parsedDupWorksheet, duplicateSheetName, journalType, reportDate);
const newData = updatedWorksheet.map((row) => Object.values(row));
XLSX.utils.sheet_add_aoa(newWorksheet, newData, { origin: -1, skipHeader: true });
} else {
// if no existing sheet name, then add new sheet
for (const sheetName of workbook.SheetNames) {
const worksheet = workbook.Sheets[sheetName];
const worksheetData = getDataRange(worksheet);
const parsedWorksheet = XLSX.utils.sheet_to_json(worksheet, { raw: false, defval: "", });
const updatedWorksheet = modifyWorksheet(worksheetData, parsedWorksheet, sheetName, journalType, reportDate);
const styledSheet = headerStyling(updatedWorksheet);
XLSX.utils.book_append_sheet(newWorkbook, styledSheet, journalType);
}
}
}
}
const consolidateFilename = namingConvention("Consolidated_Final_Report", date);
const excelBuffer = XLSX.write(newWorkbook, { bookType: "xlsx", type: "array", });
const blob = new File([excelBuffer], fileName + ".xlsx");
postMessage({ blob: blob });
} catch(e) {
/* Pass the error message back */
postMessage({ error: String(e.message || e).bold() });
}
}, false);
`;
const blob = new Blob([workerCode], { type: "text/javascript" });
const worker = new Worker(URL.createObjectURL(blob), { type: "module" });
return worker;
};