Рефакторинг docxtemplater с сервера, объект req json прекращает доступ в doc.setData()

Я пытаюсь реорганизовать код docxtemplater из файла моего сервера в узле. JQ-объект req.body там работает нормально, и даже может быть console.logged внутри метода doc.setData(). Однако, когда я пытаюсь запустить сервер, я получаю эту ошибку:

firstName: data.firstName,
               ^      
TypeError: Cannot read property 'firstName' of undefined     

Это мой файл docxtemplater.js.

const express = require('express');
const Docxtemplater = require('docxtemplater');
const JSZip = require('jszip');
const fs = require('fs');
const path = require('path');
const bodyParser = require('body-parser');

function estateDoc (data) {

let content = fs.readFileSync(path.resolve(__dirname, 'docxGen.docx'), 'binary');

let zip = new JSZip(content);

let doc = new Docxtemplater();
doc.loadZip(zip);

doc.setData({
  firstName: data.firstName,
  lastName: data.lastName,
  middleName: data.middleName,
  suffix: data.suffix,
  socialSecurity: data.socialSecurity,
  address: data.address,
  telephone: data.telephone,
  heir: data.heir
});
  try {
      doc.render()
  }
  catch (error) {
      var e = {
          message: error.message,
          name: error.name,
          stack: error.stack,
          properties: error.properties,
      }
      console.log(JSON.stringify({error: e}));
      throw error;
  }
  var buf = doc.getZip()
               .generate({type: 'nodebuffer'});
  fs.writeFileSync(path.resolve(__dirname + '/doc-sender-catcher', 'output.docx'), buf)
};
estateDoc();

module.exports = {estateDoc};

1 ответ

Поэтому я оставляю это здесь для любого новичка в рефакторинге в узле. Не объявляйте свою функцию, а затем вызывайте ее перед экспортом и запуском. Моей проблемой была последняя строка, где я запускал функцию с пустым аргументом данных...

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