Не удается найти «слабую» ошибку модуля на Aws Ec2 в Node.js Server? - PullRequest
0 голосов
/ 06 марта 2019

У меня есть серверное приложение на основе 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]} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  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} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  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?

...