I am getting error 'PptxGenJS is not a constructor'

1.3k views Asked by At

I am trying to use PptxGenJS.

I installed it by npm install pptxgenjs --save

I created very simple function, according to the examples.

When I am doing: import * as PptxGenJS from 'pptxgenjs';

const pptx = new PptxGenJS();

I am getting error "pptxgenjs__WEBPACK_IMPORTED_MODULE_2__ is not a constructor"

When I am doing:

let PptxGenJS = require("pptxgenjs");

let pptx = new PptxGenJS();

I am getting the error: "TypeError: PptxGenJS is not a constructor"

I am using 3.0.1 with Angular8 on Ubuntu

3

There are 3 answers

0
seems On

make sure to allow synthetic default imports and esModule interoperability in your tsconfig file:

 "angularCompilerOptions": {
    ... 
        "esModuleInterop": true,
    "allowSyntheticDefaultImports": true,
  }

then import in into your component like this:

  import PptxGenJS  from 'pptxgenjs'

use like this:

 ppt = new PptxGenJS();
0
hrinema On

I find out that using pptxgenjs-angular works fine.

What I done is:

import * as PptxGenJS from 'pptxgenjs-angular';

const pptx = new PptxGenJS();

For some unknown reason, PptxGenJS failed to find the JSZip.

So I create ZIP object in my function, and send it as new parameter to

const JSZip = require('jszip');

var zip = new JSZip();

pptx.save(fileName, null, null, zip);
0
Boopathy On

I faced same issue. Import correct file, then it should work,

import pptxgen from "pptxgenjs";

let pres = new pptxgen();
let slide = pres.addSlide();
let textboxOpts = { x: 1, y: 1, w: '80%', h: 0.5, align: 'center', color: '131A1A', fill: 'B2E8ED', fontSize: 20 };
slide.addText("Sample text", textboxOpts);

pres.writeFile("Sample Presentation.pptx");