Ошибка jsPDF в NativeScript: ReferenceError: Не удается найти переменную: окно - PullRequest
0 голосов
/ 04 октября 2019

Я пытаюсь добавить jsPDF в свой проект NativeScript (Angular + Typescript) для преобразования HTML в PDF. Я следовал этому руководству о том, как использовать jsPDF в NativeScript. Однако я продолжаю сталкиваться с той же ошибкой, когда пытаюсь кодировать пример:

let doc = new jsPDF();
        doc.setFontSize(26);
        doc.text(40, 40, "First PDF with NativeScript using jsPDF!");
        let dataUrl = doc.output('datauristring');
        if(dataUrl) {
            dialogs.alert({
                title: "jsPDF - Base64",
                message: dataUrl,
                okButtonText: "Copy to Clipboard"
            }).then(() => {
                clipboard.setText(dataUrl)
            });
        }

Я получаю следующую ошибку:

NativeScript обнаружил фатальную ошибку: ReferenceError: Can 'найти переменную: window

Я думал, что эти строки исправят эту ошибку, но это не так, я попытался добавить это в компонент, который я пытался использовать для генерации PDF, а также вmain.ts и app.component.ts:

global['window'] = {
    'document': {
        'createElementNS': () => { return {} }
    }
};
global['document'] = {
    'createElement': (str) => { return {} }
};
global['navigator'] = {};
//Imports
var base64 = require('base-64');
import * as jsPDF from 'jspdf';
global['btoa'] = (str) => {
    return base64.encode(str);
};
global['atob'] = (bytes) => {
    return base64.decode(bytes);
};
global['u8'] = {};

Однако я продолжаю получать ту же ошибку и не могу найти никаких различий между моим кодом и рабочим примером детской площадки . Я также добавил все библиотеки и плагин, необходимый для работы этого примера:

npm install jspdf --save
npm install @types/jspdf --save
npm install base-64 --save
npm install utf8 --save
tns plugin add nativescript-clipboard

EDIT Я также попытался понизить эти модули узлов до той же версии, что и игровая площадка. с помощью. Все та же ошибка.

EDIT Если я использую модули узлов так же, как на детской площадке, так что я просто добавляю их в каталог приложения, он работает так, как и положено. Тем не менее, это кажется плохой работой, есть ли другое решение?

Кто-то видит, что я делаю неправильно или чего мне здесь не хватает? Любая помощь будет очень хорошей, заранее спасибо!

...