У меня есть серверное приложение на основе Node.js
, размещенное на экземпляре Aws Ec2
, и оно запущено и работает. Но когда я нажимаю на конкретный Api
, который в основном экспортирует Pdf, который производит на бэк-энде (Node.js)
и загружает на стороне клиента (Angular5)
, это выдает ошибку.
Вот моя функция Api для продукта pdf на Node.js, которая сначала вызывает
exports.printPdf = (req, res) => {
console.log('in print pf')
let body = parseBody(req);
let masterRecord = body.masterRecord;
let imageSrc;
let streets;
let phones;
let faxes;
let cities;
let states;
let zipCodes;
// imageSrc = convertImagetoBase64(__dirname + '/logo_blue.png');
// console.log(convertImagetoBase64(__dirname + '/logo_blue.png'));
image2base64(__dirname + '/logo-orange.png') // you can also to use url
.then(
(response) => {
// console.log(response, 'response');
imageSrc = `data:image/png;base64,${response}`;
htmlData.partialTemplate += `<body>
<div class="app-modal-body" id="content">
<div class="intro-div text-center">
<img class="pdf-logo" src="${imageSrc}" style="margin-top : 400px;">
<h4 class="pdf-color mt-5 font-20 font-bold">www.bassmedicalgroup.com</h4>
<h2 class="pdf-color my-4 font-bold" style="font-size: 28px;">One Vision, Multiple Specialties.</h2>
<h4 class="pdf-color font-20 font-bold">Advanced Practice Providers</h4>
<h4 class="pdf-color font-20 font-bold">Directory 2019</h4>
</div>
<div class="complete-data-div">`
let categories = Object.keys(masterRecord);
categories.forEach(category => {
htmlData.partialTemplate += `<div class="data-section">
<h3 class="subtitle fancy" style="font-size: 24px;font-weight:bold; text-transform : uppercase"><span>${category}</span></h3>`
masterRecord[category].forEach(doctor => {
streets = doctor.Street.split(',');
htmlData.partialTemplate += `<div class="data-row">
<b><p class="m-0 font-16">${doctor.Name}, ${doctor.Credentials}</p></b></div>`;
if (streets.length > 1) {
cities = doctor.City.split(',');
states = doctor.State.split(',');
faxes = doctor.Fax.split(',');
phones = doctor.Telephone.split(',');
zipCodes = doctor.Zip_Code.split(',');
streets.forEach((street, index) => {
htmlData.partialTemplate += `
<div class="data-row">
<p class="m-0 font-16">${streets[index]}, ${cities[index]}, ${states[index]} ${zipCodes[index]}</p>
<div class="tele-fax-div">
<p class="m-0 font-16">Telephone: ${phones[index]} Fax: ${faxes[index]}</p>
</div> <br>
</div>
</div>`
})
} else if (streets.length == 1) {
htmlData.partialTemplate += `
<div class="data-row">
<p class="m-0 font-16">${doctor.Street}, ${doctor.City}, ${doctor.State} ${doctor.Zip_Code}</p>
<div class="tele-fax-div">
<p class="m-0 font-16">Telephone: ${doctor.Telephone} Fax: ${doctor.Fax}</p>
</div>
</div> <br>
</div>`
}
})
})
htmlData.partialTemplate = htmlData.partialTemplate + ` </div>
</div>
</body>
</html>`
let finalHtml = htmlData.partialTemplate;
console.log('outside of success pdf');
htmltopdf.createFromHtml(finalHtml, "Pdfs/doctors.pdf", function (err, success) {
if (err) {
console.log('in error of pdf generation')
res.status(201).json({ status: 201, success: false, Error: err });
}
if (success) {
console.log('in success of pdf generation')
res.status(200).json({ status: 200, success: true });
console.log('in success of pdf generation') // res.download('pdfs/doctors.pdf');
}
});
}
)
.catch(
(err) => {
console.log(err, 'in catch error'); //Exepection error....
res.status(204).json({ status: 204, success: false, Error: err });
}
)
}
Затем загрузите pdf-вызовы с клиента, и эта функция API выглядит следующим образом
exports.exporttPdf = (req, res) => {
res.download(path.join(__dirname, '../../../Pdfs/doctors.pdf'));
}
Но когда я вижу в Aws Ec2
журналы экземпляра, он показывает ошибку при экспорте, как это
Error: Cannot find module 'weak'
0|index | at Function.Module._resolveFilename
(internal/modules/cjs/loader.js:613:15)
0|index | at Function.Module._load
(internal/modules/cjs/loader.js:539:25)
0|index | at Module.require (internal/modules/cjs/loader.js:667:17)
0|index | at require (internal/modules/cjs/helpers.js:20:18)
0|index | at new D (/home/ubuntu/directory-
server/node_modules/dnode/index.js:28:20)
0|index | at module.exports (/home/ubuntu/directory-
server/node_modules/dnode/index.js:8:12)
0|index | at /home/ubuntu/directory-
server/node_modules/phantom/phantom.js:174:13
0|index | at Server.handler (/home/ubuntu/directory-
server/node_modules/shoe/index.js:22:9)
0|index | at Server.emit (events.js:197:13)
0|index | at App.emit (/home/ubuntu/directory-
server/node_modules/sockjs/lib/sockjs.js:182:27)
0|index | at Session.emit_open (/home/ubuntu/directory-
server/node_modules/sockjs/lib/transport.js:107:23)
0|index | at processTicksAndRejections
(internal/process/next_tick.js:74:9) code: 'MODULE_NOT_FOUND' }
Примечание. На моем локальном компьютере функция экспорта в pdf работает правильно, как и ожидалось, и pdf также загружает
Как мне избавиться от этой ошибки, с которой я сталкиваюсь после развертывания на Aws Ec2
?