[英]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.