我使用dojo进行客户端开发,整个项目构建在Node上。但是对于前端,我正在整合Dojo的使用。我使用Dojo相对较新,但到目前为止,我已经成功地创建了自己的自定义小部件,并在html页面上显示它们,问题相对较少。现在,我正在尝试在Dojo小部件中整合外部Node.js库{SheetJS}的使用。我已经尝试了我能想到的一切让它工作,但似乎每一个不同的事情,我尝试我一些不同的错误比以前的尝试。
我的文件结构大致如下:
My Project
Public
Dojo
Dojo
Dijit
Dstore
Templates
我尝试了以下方法:
1.将从GitHub下载的完整xlsx文件夹添加到public/dojo
文件夹下,然后尝试执行以下操作:
define([
"dojo/_base/declare",
"xlsx/xlsx"
],
function (declare, xlsx) {
// ... declare and other things ...
/* Generate Workbook */
console.log(xlsx); // prints: not-a-module
var wb = xlsx.utils.book_new();
var ws = xlsx.utils.aoa_to_sheet(tempArr);
xlsx.utils.book_append_sheet(wb, ws, "SheetJS");
/* Trigger Download with `writeFile` */
xlsx.writeFile(wb, "SheetJS.csv", {compression:true});
});
我得到的错误是:
未捕获的类型错误:无法读取未定义的属性“book_new”
1.使用GitHub自述文件中的script标签:<script lang="javascript" src="https://unpkg.com/xlsx/dist/xlsx.full.min.js"></script>
define([
"dojo/_base/declare",
"https://unpkg.com/xlsx/dist/xlsx.full.min.js"
],
function (declare) {
// ... declare and other things ...
/* Generate Workbook */
console.log(XLSX); // prints: {}
var xlsx = XLSX;
var wb = xlsx.utils.book_new();
var ws = xlsx.utils.aoa_to_sheet(tempArr);
xlsx.utils.book_append_sheet(wb, ws, "SheetJS");
/* Trigger Download with `writeFile` */
xlsx.writeFile(wb, "SheetJS.csv", {compression:true});
});
这里的错误是:
未捕获的类型错误:无法读取未定义的属性“book_new”
cd
进入public/dojo/dojo/
并执行npm install xlsx
,然后尝试执行以下操作:
define([
"dojo/_base/declare",
"dojo/node!xlsx"
],
function (declare, xlsx) {
// ... declare and other things ...
/* Generate Workbook */
console.log(xlsx);
var wb = xlsx.utils.book_new();
var ws = xlsx.utils.aoa_to_sheet(tempArr);
xlsx.utils.book_append_sheet(wb, ws, "SheetJS");
/* Trigger Download with `writeFile` */
xlsx.writeFile(wb, "SheetJS.csv", {compression:true});
});
我得到的错误是:
未捕获的错误:找不到所需的Node.js
我想知道这个问题是否与XLSX库有关,当它试图找到XLSX.utils
时,它找不到我想要使用的实用程序?
欢迎所有的想法。提前感谢任何帮助或想法来我的方式。
2条答案
按热度按时间zrfyljdw1#
当您
npm install xlsx
时,xlsx库将安装在项目的node_modules
文件夹中。我不完全确定您当前的项目结构,但是应该可以从Dojo小部件中找到相应的项目。
例如:
ih99xse12#
我遇到你这种情况已经有几天了,Ferry的解决方案不起作用,好像跟SheetJS有关,那边解决的关于AMD/DOJO的罚单也不起作用。
您最好的选择是使用ExcelJS。在这种情况下,这是适合我的: