jsPDF AutoTable - autoTable не является функцией

Я использую JSPdf в приложении Angular, и я пытаюсь использовать плагин JS Autotable, но я сталкиваюсь с ошибкой JS

ИСКЛЮЧЕНИЕ: Uncaught (в обещании): TypeError: doc.autoTable не является функцией

Ошибка типа: doc.autoTable не является функцией

У меня установлены jspdf и jspdf-autotable через npm, я подтвердил, что они находятся в модулях узла.

Я импортировал оба плагина следующим образом:

import * as jsPDF from 'jspdf' 
import * as autoTable from 'jspdf-autotable'

и вот мой код:

private renderPdf():void{
    let testcolumns = ["TestCol1", "TestCol2"];
    let testrows = [["test item 1", "test item 2"]];
    let doc = new jsPDF();
    doc.autoTable(testcolumns, testrows);
    doc.save('sample.pdf');
}

Могу ли я что-то упустить здесь или предоставить больше кода, чтобы помочь определить проблему?

Спасибо!

7 ответов

Решение

Просто удалите 2 первую строку импорта и добавьте следующие строки:

var jsPDF = require('jspdf');
require('jspdf-autotable');

Вы можете увидеть пример здесь

У меня была такая же проблема, и я исправил ее так:

      import jsPDF from '../../node_modules/jspdf/dist/jspdf.umd.min.js'
import { applyPlugin } from 'jspdf-autotable'
applyPlugin(jsPDF)

Я использую «jspdf»: «^ 2.3.1», «jspdf-autotable»: «^ 3.5.20», надеюсь, это вам поможет!

Я получал ту же проблему, и этот работает для меня. я написал это в импорте как

import * as jsPDF from 'jspdf';
import 'jspdf-autotable';

И в функции я объявил это как

const doc = new jsPDF();

Это сработало для меня:

      import jsPDF from 'jspdf';

require('jspdf-autotable');

const tableColumns = ["column1", "Column2", "Column3"];

const tableRows = [[1,2,3],[a,b,c],[X,Y,Z]];

const doc = new jsPDF();

doc.autoTable(tableColumns, tableRows, { startY: 20 });

doc.text("Closed tickets within the last one month.", 14, 15);

doc.save('dataModel.pdf');

У меня была та же проблема сегодня при использовании https://github.com/SimulatedGREG/electron-vue. я решил это, добавив 'jspdf' и 'jspdf-autotable' в массив белых списков в пути к проекту /.vscode

let whiteListedModules = [
  'vue',
  'vue-sweetalert2',
  'element-ui',
  'vue-avatar-component',
  'vue-router', 
  'vue-json-excel',
  'vuex',
  'vue-chart-js',
  'pluralize',   
  'Print',
  'jspdf',
  "jspdf-autotable"
]

Вы можете импортировать jsPDF как обычно:

import jsPDF from 'jspdf';

а затем для autoTable:

require('jspdf-autotable');

добавьте это ^ внутри функции

      import jsPDF from 'jspdf';
import autoTable from 'jspdf-autotable';

const doc = new jsPDF();
autoTable(doc, { html: '#my-table' });
doc.save('table.pdf');`

это сработало для меня

Другие вопросы по тегам