Попытка использовать библиотеку внешних узлов с Dojo - PullRequest
0 голосов
/ 14 мая 2019

Я использую dojo для разработки на стороне клиента. Проект в целом построен на Node, но для фронтэнда я использую Dojo. Я относительно новичок в использовании dojo, но мне удалось создать свои собственные виджеты и отобразить их на html-странице с относительно небольшим количеством проблем. Теперь я пытаюсь включить использование внешней библиотеки Node.js { SheetJS } в виджет dojo. Я перепробовал все, что мог придумать, чтобы заставить его работать, но мне кажется, что каждая другая вещь, которую я пробую, у меня какая-то ошибка, отличная от предыдущей попытки.

Моя файловая структура выглядит примерно так:

My Project
   Public
      Dojo
         Dojo
         Dijit
         Dstore
         Templates

Я пробовал следующее:

  1. Добавление полной папки xlsx, загруженной с GitHub, в папку 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});
});

Я получаю ошибку:

Uncaught TypeError: Невозможно прочитать свойство 'book_new' из неопределенного

  1. Использование тега script, взятого из 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});
});

Ошибка здесь:

Uncaught 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});
});

Я получаю ошибку:

Uncaught Ошибка: не удается найти Node.js требуется

Интересно, связана ли проблема с библиотекой XLSX, и когда она пытается найти XLSX.utils, она не может найти утилиту, которую я хочу использовать?

Все идеи приветствуются. Заранее благодарю за любую помощь или идеи, которые приходят мне на помощь.

1 Ответ

0 голосов
/ 19 июня 2019

Когда вы npm install xlsx, библиотека xlsx будет установлена ​​в папке node_modules вашего проекта.

Я не совсем уверен в вашей текущей структуре проекта, но проект должен быть найден относительно вашего Dojo.widget.

Например:

define([
     "dojo/_base/declare",
     "./../node_modules/xlsx/xlsx.js"  //change it until it will be found
],
function (declare, xlsx) {
    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});
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...