'Uncaught (in promise) TypeError: Cannot read properties of null (reading 'sendWithPromise') Pdf.js + electron

i am making electron desktop kiosk app and have problem with rendering pdf (im using library pdf.js). I need to help with this error, i make bold code where is error line 192 (const page = await doc.getPage(pageNumber);). HELP

Uncaught (in promise) TypeError: Cannot read properties of null (reading 'sendWithPromise') at WorkerTransport.getPage (api.js:2792:21) at PDFDocumentProxy.getPage (api.js:786:12) at createPDF (pdf-handler.js:192:26) at HTMLDivElement.zoomInPdf (pdf-handler.js:96:7) getPage @ api.js:2792 getPage @ api.js:786 createPDF @ pdf-handler.js:192 zoomInPdf @ pdf-handler.js:96

    let state = {
  currentPage: 1,
  scale: 1.5
};

export function getCurrentPage() {
  return state.currentPage;
}

export function getCurrentScale() {
  return state.scale;
}

export function setCurrentPage(currentPage) {
  state = { ...state, currentPage };
}

export function setCurrentScale(scale) {
  state = { ...state, scale };
}

export async function openPDF(filepath, filename) {
  document.getElementById("pdfPageName").innerHTML = filename;
  console.log(filename)
  setCurrentPage(1);
  setCurrentScale(1.5)
  clearCanvas(canvas);
  var pdfDocument = await pdfjsLib.getDocument(filepath).promise;
  createPDF(pdfDocument, getCurrentPage(), getCurrentScale());
  setPages(pdfDocument.numPages);

  const nextButtonHandler = () => {
    const nextPageNumber = getCurrentPage() + 1;
    if (nextPageNumber > pdfDocument.numPages) return;
    setCurrentPage(nextPageNumber);
    if (pageRendering) {
      console.log("renderuje sie")
      //ensure previous operations were cancelled or completed.
      clearCanvas(canvas)

        .then(function () {
          createPDF(pdfDocument, nextPageNumber, getCurrentScale());
        });
    } else {
      createPDF(pdfDocument, nextPageNumber, getCurrentScale());
    };

  };

  const prevButtonHandler = () => {
    const prevPageNumber = getCurrentPage() - 1;
    if (prevPageNumber < 1) return;
    setCurrentPage(prevPageNumber);
    if (pageRendering) {
      console.log("renderuje sie")
      //ensure previous operations were cancelled or completed.
      clearCanvas(canvas)

        .then(function () {
          createPDF(pdfDocument, prevPageNumber, getCurrentScale());
        });
    } else {
      createPDF(pdfDocument, prevPageNumber, getCurrentScale());
    };
  };

  const zoomInPdf = () => {
    const zoomIn = getCurrentScale() + 1;
    if (zoomIn > 5) return;
    setCurrentScale(zoomIn);
    if (pageRendering) {
      console.log("renderuje sie")
      console.log(canvas)
      console.log(canvasContext)

      clearCanvas(canvas)
        .then(function () {
          createPDF(pdfDocument, getCurrentPage(), getCurrentScale());
        });
    } else {
      createPDF(pdfDocument, getCurrentPage(), getCurrentScale());
    };

  };

  const zoomOutPdf = () => {
    const zoomOut = getCurrentScale() - 1;
    if (zoomOut < 1) return;
    setCurrentScale(zoomOut);
    if (pageRendering) {
      console.log("renderuje sie")
      //ensure previous operations were cancelled or completed.
      clearCanvas(canvas)
        .then(function () {
          createPDF(pdfDocument, getCurrentPage(), getCurrentScale());
        });
    } else {
      createPDF(pdfDocument, getCurrentPage(), getCurrentScale());
    };

  };

  const backButtonHandler = () => {
    console.log(pdfDocument)
    pdfDocument.destroy()

    hidePDFView();
    nextButton.removeEventListener("click", nextButtonHandler);
    prevButton.removeEventListener("click", prevButtonHandler);
    backButton.removeEventListener("click", backButtonHandler);
    zoomInButton.removeEventListener("click", prevButtonHandler);
    zoomOutButton.removeEventListener("click", backButtonHandler);
    console.log(pdfDocument)

  };

  nextButton.addEventListener("click", nextButtonHandler);
  prevButton.addEventListener("click", prevButtonHandler);
  backButton.addEventListener("click", backButtonHandler);

  zoomInButton.addEventListener("click", zoomInPdf);
  zoomOutButton.addEventListener("click", zoomOutPdf);
}

    

var pageRendering = false
var pageNumPending = null

export async function createPDF(doc, pageNumber, scaleNumber) {
  pageRendering = true;

  console.log(doc)
  console.log(doc.pageNumber)
  console.log(pageNumber)
  console.log(scaleNumber)

  **const page = await doc.getPage(pageNumber);**
  console.log(page)

  const viewport = page.getViewport({ scale: scaleNumber });
  console.log(viewport)

  canvas.height = viewport.height;
  canvas.width = viewport.width;
  console.log(pageRendering)


  var renderTask = page.render({ viewport, canvasContext });
  renderTask.promise.then(function () {
    console.log("sius")
    console.log(pageRendering)
    pageRendering = false;


  });
  setPage(pageNumber);
  return renderTask
}


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source