Javascript NativeScript:ReferenceError:Can';找不到变量:窗口
我正在尝试在我的NativeScript项目(Angular+Typescript)中添加jsPDF,以将HTML转换为PDF。我接着介绍了如何在NativeScript中使用jsPDF。但是,当我尝试编写示例代码时,我总是遇到相同的错误:Javascript NativeScript:ReferenceError:Can';找不到变量:窗口,javascript,angular,typescript,nativescript,jspdf,Javascript,Angular,Typescript,Nativescript,Jspdf,我正在尝试在我的NativeScript项目(Angular+Typescript)中添加jsPDF,以将HTML转换为PDF。我接着介绍了如何在NativeScript中使用jsPDF。但是,当我尝试编写示例代码时,我总是遇到相同的错误: let doc = new jsPDF(); doc.setFontSize(26); doc.text(40, 40, "First PDF with NativeScript using jsPDF!");
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:找不到
变量:窗口
我以为这些行会处理这个错误,但它们不会,我尝试在我尝试使用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
编辑我还尝试将这些节点模块降级到与游乐场使用的完全相同的版本。还是一样的错误
编辑如果我像在操场上一样使用节点模块,那么我只是将它们添加到应用程序目录中,它也可以正常工作。但这感觉是一个糟糕的工作,有没有其他解决方案
有人看到我做错了什么或我错过了什么吗?任何帮助都会很好,提前谢谢 你可以下载游乐场演示并在本地比较项目,看看你那边缺少了什么-我刚刚在本地启动了演示,它按预期工作。这正是我所做的。我比较了所有东西,但它不适合我。