【发布时间】:2020-10-17 22:03:56
【问题描述】:
角度 9 有问题 jsPDF 的模块(安装的类型 + 包本身)
当做 ng serve 它工作 执行 ng build --prod 时,出现错误
ERROR in src/app/xxx/xxxx.componentomponent.ts:52:27 - error TS2351: This expression is not constructable.
Type 'typeof jsPDF' has no construct signatures.
52 let pdf = new jsPDF('p', 'mm', 'a4');
~~~~~
src/app/xxx/xxxx.component.ts:7:1
7 import * as jsPDF from 'jspdf';
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Type originates at this import. A namespace-style import cannot be called or constructed, and will cause a failure at runtime. Consider using a default import or import require here instead.
tsconfig 文件有 "esModuleInterop": true,
{
"compileOnSave": false,
"compilerOptions": {
"baseUrl": "./",
"outDir": "./dist/out-tsc",
"sourceMap": true,
"declaration": false,
"downlevelIteration": true,
"experimentalDecorators": true,
"module": "esnext",
"moduleResolution": "node",
"resolveJsonModule": true,
"esModuleInterop": true,
"importHelpers": true,
"target": "es2015",
"allowSyntheticDefaultImports":true,
"typeRoots": [
"node_modules/@types"
],
"lib": [
"es2018",
"dom"
]
},
"angularCompilerOptions": {
"fullTemplateTypeCheck": true,
"strictInjectionParameters": true
}
}
我这样导入模块:
**import * as jsPDF from 'jspdf';**
在我的课堂上这样使用它:
generatePDF() {
var data = document.getElementById('contentToConvert');
html2canvas(data).then(canvas => {
var imgWidth = 208;
var imgHeight = canvas.height * imgWidth / canvas.width;
const contentDataURL = canvas.toDataURL('image/png')
let pdf = **new jsPDF**('p', 'mm', 'a4');
var position = 0;
pdf.addImage(contentDataURL, 'PNG', 0, position, imgWidth, imgHeight)
pdf.save('skill-set.pdf');
});
}
我还尝试在 angular.json 的脚本部分添加模块 js 文件
"scripts": [
"node_modules/jquery/dist/jquery.min.js",
"node_modules/bootstrap/dist/js/bootstrap.min.js",
**"node_modules/jspdf/dist/jspdf.min.js"**
]
【问题讨论】:
-
尝试将 jsPDF 安装为节点模块:
npm install -S jspdf并从angular.json删除脚本导入 -
我最初是用 npm install jspdf --save 完成的,然后像模块一样尝试
-
你也安装
@types/jspdf? -
@David 是的,我做到了。我发现了问题所在,我发送了几个参数,正如我在 web 上的一篇文章中发现的那样。 **新的 jsPDF**('p', 'mm', 'a4');去掉参数,问题解决了
标签: angular typescript jspdf angular9 angular-cli-v9