我正在使用 dojo 进行客户端开发。整个项目是基于 Node 构建的,但是对于前端,我结合了 Dojo 的使用。我对使用 dojo 比较陌生,但到目前为止,我已经设法创建自己的自定义小部件并将它们显示在 html 页面上,而且问题相对较少。现在我正在尝试将外部 Node.js 库 { SheetJS } 的使用合并到一个 dojo 小部件中。我已经尝试了所有我能想到的让它工作,但似乎我尝试的每一个不同的事情都与之前的尝试不同。
我的文件结构如下:
My Project
Public
Dojo
Dojo
Dijit
Dstore
Templates
我尝试了以下方法:
- 在文件夹下添加从 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”
- 使用从 GitHub README 中获取的脚本标签:
<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
它时找不到我想要使用的工具?
欢迎所有想法。提前感谢您提供的任何帮助或想法。