繁体   English   中英

错误:在服务器中生成 ENOENT html-pdf nodejs

[英]Error: spawn ENOENT html-pdf nodejs in server

使用 html-pdf 创建 pdf 时出现问题。 在我的本地运行良好,但在服务器中无法运行。 我的代码如下:

const fileName = './public/offering/' + dayjs().format('YYYY-MM-DD') + '-' + name[0] + '.pdf';

const htmlToPdfOptions = {
     type: 'PDF',
     height: '1200px',
     width: '816px',
     renderDelay: 2000,
     format: 'Letter',
     phantomPath: require('requireg')('phantomjs-prebuilt').path,
};
pdf.create(file, htmlToPdfOptions).toFile(fileName, async function (err: any, result: any) {
   if (err) return console.log(err, 'xxxxxxxxxxxxxx this error');
   console.log(result)
});

在我的 docker 中这样

FROM node:14-alpine

RUN npm install --global pm2

RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY . .

COPY package*.json ./
COPY . .

RUN npm install && npm run build

RUN npm install -g phantomjs --unsafe-perm

COPY . .

EXPOSE 8500

CMD ["pm2-runtime", "start", "src/index.js"]

服务器错误是

Error: spawn /usr/src/app/node_modules/phantomjs-prebuilt/lib/phantom/bin/phantomjs ENOENT
     at Process.ChildProcess._handle.onexit (internal/child_process.js:269:19)
     at onErrorNT (internal/child_process.js:467:16)
     at processTicksAndRejections (internal/process/task_queues.js:82:21) {
   errno: -2,
   code: 'ENOENT',
   syscall: 'spawn /usr/src/app/node_modules/phantomjs-prebuilt/lib/phantom/bin/phantomjs',
   path: '/usr/src/app/node_modules/phantomjs-prebuilt/lib/phantom/bin/phantomjs',
   spawnargs: [
     '--local-url-access=false',
     '/usr/src/app/node_modules/html-pdf/lib/scripts/pdf_a4_portrait.js'
   ]
 }

谁能帮我? 因为我已经在 web 上尝试了一些解决方案但是没有任何效果或者任何人都可以给我参考?。 示例: Docker 中的 Nodejs + PhantomJS:错误:spawn - ENOENT

您的 Dockerfile 有一些奇怪的复制命令。 这应该可以解决您的问题

FROM node:14-alpine

RUN npm install --global pm2

RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY . .

RUN npm install && npm run build

RUN npm install -g phantomjs --unsafe-perm

EXPOSE 8500

CMD ["pm2-runtime", "start", "src/index.js"]

您还应该将node_modules添加到.dockerignore文件中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM