【问题标题】:jsPDF ReferenceError: window is not definedjsPDF ReferenceError:未定义窗口
【发布时间】:2018-05-27 06:40:41
【问题描述】:

我需要用 Javascript 创建一个 PDF。我找到了 npm 包“jsPDF”。我已经用npm install jspdf 安装了“jsPDF”。它成功安装,但是当我执行以下代码时:

const jspdf = require ('jspdf');
let doc = new jspdf();

doc.setFontSize(40);
doc.text(35, 25, 'PDF with jsPDF!');

我收到一条错误消息,上面写着ReferenceError: window is not defined

有人知道我的代码出了什么问题,或者缺少某些导入吗?

【问题讨论】:

    标签: javascript node.js window jspdf referenceerror


    【解决方案1】:

    在服务器端使用 jsPDF 时会出现问题。检查此拉取请求Refactor acroform.js so that it is working in node.js and enable tests for IE 11

    【讨论】:

      【解决方案2】:

      替换这个:

      const jspdf = require ('jspdf'); let doc = new jspdf();

      用这个:

      import jsPDF from 'jspdf'; var doc = new jsPDF('p', 'pt');

      【讨论】:

        【解决方案3】:

        解决这个问题:

        npm install jspdf
        

        在 node_modules/jspdf/dist/ 文件夹中,你会看到一个 jspdf.node.min.js 文件,用这个替换 jspdf.min.js。

        那么下面的代码会生成一个pdf。

        //This is a fix for the ReferenceError: window is not defined
        //
        global.window = {document: {createElementNS: () => {return {}} }};
        global.navigator = {};
        global.btoa = () => {};
        
        var fs = require('fs');
        var jsPDF = require('jspdf');
        
        var doc = new jsPDF();
        
        doc.setFontSize(40);
        doc.text(35, 25, 'PDF with jsPDF!');
        
        var data = doc.output();
        
        fs.writeFileSync('./document.pdf', data);
        
        delete global.window;
        delete global.navigator;
        delete global.btoa;
        

        【讨论】:

          【解决方案4】:

          由于我合并了服务器端渲染,最终对我有用的是创建一个环境变量来查看我是否在浏览器中,然后用这个标志包装你的代码。

          if(process.env.BROWSER){
              const jspdf = require ('jspdf');
              let doc = new jspdf();
          
              doc.setFontSize(40);
              doc.text(35, 25, 'PDF with jsPDF!');
           }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2021-03-30
            • 2020-10-08
            • 2020-09-18
            • 2017-09-06
            • 2020-11-12
            • 2018-10-29
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多