Вот мой код, использующий wkhtmltopdf в nodejs.PDF можно скачать правильно, посетив localhost:4001/pdf
, и приложение не будет аварийно завершать работу.
router.get('/', function(req, res, next) {
let htmlContent = "<p>whatever</p>";
wkhtmltopdf(htmlContent, {
output: 'demo.pdf',
pageSize: 'A4'
});
res.download('demo.pdf');
}
, но после того, как я завернул свое приложение в образ докера, PDF все равно можно будет загрузить правильно но приложение упало , что вызвало ошибку: QXcbConnection
Вот файл docker.
FROM node:8
WORKDIR /usr/src/app
RUN apt-get update && apt-get install -y wkhtmltopdf
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 4001
CMD [ "npm", "start" ]
Вот ошибка
GET /pdf 304 27.978 ms - -
events.js:183
throw er; // Unhandled 'error' event
^
Error: QXcbConnection: Could not connect to display
wkhtmltopdf exited with code 134
at handleError (/usr/src/app/node_modules/wkhtmltopdf/index.js:142:16)
at ChildProcess.<anonymous> (/usr/src/app/node_modules/wkhtmltopdf/index.js:114:7)
at emitTwo (events.js:126:13)
at ChildProcess.emit (events.js:214:7)
at Process.ChildProcess._handle.onexit (internal/child_process.js:198:12)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! pdfdownloader@0.0.0 start: `node ./bin/www`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the pdfdownloader@0.0.0 start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! /root/.npm/_logs/2019-02-28T05_47_34_845Z-debug.log