尝试将外部节点库与Dojo一起使用

时间:2019-05-14 11:25:19

标签: javascript node.js dojo js-xlsx

我正在使用dojo进行客户端开发。整个项目是基于Node构建的,但是对于前端,我将使用Dojo。我对使用dojo还是比较陌生,但是到目前为止,我已经设法创建了自己的自定义小部件,并将它们显示在html页面上的问题相对较少。现在,我尝试在dojo小部件中合并使用外部Node.js库{ SheetJS }。我已经尝试了一切想使它正常工作的方法,但是似乎每件事我都尝试了与先前尝试不同的错误。

我的文件结构如下:

My Project
   Public
      Dojo
         Dojo
         Dijit
         Dstore
         Templates

我尝试了以下操作:

  1. public/dojo文件夹下添加从GitHub下载的完整xlsx文件夹。然后,我尝试执行以下操作:
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});
});

我得到的错误是:

  

未捕获的TypeError:无法读取未定义的属性'book_new'

  1. 使用从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});
});

这里的错误是:

  

未捕获的TypeError:无法读取未定义的属性'book_new'

  1. 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时找不到我要使用的实用程序吗?

欢迎所有想法。预先感谢您提供的任何帮助或想法。

1 个答案:

答案 0 :(得分:0)

n=23583 for i=1:n TO(i,:) = interp1(P(i,:),T(i,:),PO) end 时,xlsx库将安装在项目的npm install xlsx文件夹中。

我不确定您当前的项目结构,但是应该从您的Dojo小部件中找到相对应的项目。

例如:

node_modules