我想知道如何在React项目中导入外部JavaScript库,例如我想要导入jspdf库:https://github.com/MrRio/jsPDF/blob/master/jspdf.js,并在我的React应用程序中使用它。
我尝试使用require的方式:
let React = require('react');
let { Spacing, Typography } = Styles;
let DoughnutChart = require("react-chartjs").Doughnut;
let Chart = require('react-google-charts').Chart;
let { StylePropable, StyleResizable } = Mixins;
let EditableDiv = require('../EditableDiv.jsx');
//some other library
//the library that matter for me
var pdfConverter = require('../utils/jspdf.source.js');
//then I have my classical react code which works and a function to generate ad pdf
_generatePdf: function(){
console.log('Genrating pdf');
var doc = new pdfConverter.jsPDF('p','pt');
var img = new Image();
}
我遇到了以下错误:TypeError: pdfConverter.jsPDF 不是一个函数。
为了让它工作,我做了一些丑陋的事情,将 jspdf-source.js 的源代码复制到我的 react.jsx 文件中,并调用 jsPDF 而不是 pdfConverter.jsPDF。这绝对不是正确的方法,但我试图导入和使用该库并没有成功。
您能告诉我我做错了什么以及如何纠正吗?
-编辑-
当我使用我的不恰当的解决方案(将源代码复制到我的文件中)时,我只需要执行以下操作:
var doc = new jsPDF('p','pt);
一切都很顺利,只是我有一个非常大的文件。
在@dannyjolie建议下,我直接从npm软件包中导入了jspdf,但我仍然无法使用该库。我尝试了以下代码,但产生了错误:
var pdfConverter = require('jspdf');
var converter = new pdfConverter();
var doc = converter.jsPDF('p', 'pt');
类型错误: pdfConverter不是构造函数 这意味着我需要从包中导入jsPDF而不仅仅是jspdf吗?
然后我尝试了...
let pdfConverter = require('jspdf');
var converter = pdfConverter.jsPDF;
var doc = new converter('p', 'pt');
ReferenceError: jsPDF未定义
TypeError: 转换器不是构造函数
显然,我没有正确导入或者导入方式不正确。 我做错了什么?
<script src="jspdf.min.js"></script>
放在head标签中或其他位置,这样全局的jsPDF函数就可以使用了。如果你使用linter,它可能会抗议,但你可以在lint配置中添加jsPDF作为全局变量。在eslint中,可以这样写:"globals": {"jsPDF": true}
。 - dannyjolie