net::ERR_ADDRESS_UNREACHABLE at {URL}



>我在 nodejs 中使用 puppeteer v1.19.0,在 docker 中构建和运行后无法访问错误, 是 js 文件

await puppeteer.launch({
executablePath: '/usr/bin/chromium-browser',
args: ['--no-sandbox', '--disable-setuid-sandbox', '--headless'],
}).then(async (browser) => {
const url = `${thisUrl}analisa-jabatan/pdf/${_id}`
const page = await browser.newPage()
await page.goto(url, { waitUntil: 'networkidle0' })
// await page.evaluate(() => { window.scrollBy(0, window.innerHeight) })
await page.setViewport({
width: 1123,
height: 794,
})
setTimeout(async () => {
const buffer = await page.pdf({
path: `uploads/analisa-jabatan.pdf`,
displayHeaderFooter: true,
headerTemplate: '',
footerTemplate: '',
printBackground: true,
format: 'A4',
landscape: true,
margin: {
top: 20,
bottom: 20,
left: 20,
right: 20,
},
})
let base64data = buffer.toString('base64')
await res.status(200).send(base64data)
// await res.download(process.cwd() + '/uploads/analisa-jabatan.pdf')
await browser.close()
}, 2000)
})
}

并且是码头工人文件

FROM aria/alpine-nodejs:3.10
#FROM node:12-alpine
LABEL maintainer="Aria <aryamuktadir22@gmail.com>"
# ENVIRONMENT VARIABLES
# NODE_ENV
ENV NODE_ENV=production
# SERVER Configuration
ENV HOST=0.0.0.0
ENV PORT=3001
ENV SESSION_SECRET=thisissecret
# CORS Configuration
ENV CORS_ORIGIN=http://117.54.250.109:8081
ENV CORS_METHOD=GET,POST,PUT,DELETE,PATCH,OPTIONS,HEAD
ENV CORS_ALLOWED_HEADERS=Authorization,Content-Type,Access-Control-Request-Method,X-Requested-With
ENV CORS_MAX_AGE=600
ENV CORS_CREDENTIALS=false
# DATABASE Configuration
ENV DB_HOST=anjabdb
ENV DB_PORT=27017
ENV DB_NAME=anjab
# Tell Puppeteer to skip installing Chrome. We'll be using the installed package.
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true 
PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser

# SET WORKDIR
WORKDIR /usr/local/app
# INSTALL REQUIRED DEPENDENCIES
RUN apk update && apk upgrade && 
apk add --update --no-cache 
gcc g++ make autoconf automake pngquant 
python2 
chromium 
udev 
nss 
freetype 
freetype-dev 
harfbuzz 
ca-certificates 
ttf-freefont ca-certificates 
nodejs 
yarn  
libpng libpng-dev lcms2 lcms2-dev 
# COPY SOURCE TO CONTAINER
ADD deploy/etc/ /etc
ADD package.json app.js server.js process.yml ./
ADD lib ./lib
ADD middlewares ./middlewares
ADD models ./models
ADD modules ./modules
ADD uploads ./uploads
ADD assets ./assets
ADD views ./views
COPY keycloak.js.prod ./keycloak.js
# INSTALL NODE DEPENDENCIES
RUN npm cache clean --force
RUN npm config set unsafe-perm true
RUN npm -g install pm2 phantomjs html-pdf
RUN yarn && yarn install --production=true && sleep 3 &&
yarn cache clean
RUN set -ex 
&& apk add --no-cache --virtual .build-deps ca-certificates openssl 
&& wget -qO- "https://github.com/dustinblackman/phantomized/releases/download/2.1.1/dockerized-phantomjs.tar.gz" | tar xz -C / 
&& npm install -g phantomjs 
&& apk del .build-deps
EXPOSE 3001

并且是结果错误:net::ERR_ADDRESS_UNREACHABLE 在 http://117.54.250.109:8089/analisa-jabatan/pdf/5ee9e6a15ff81d00c7c3a614 at navigation (/usr/local/app/node_modules/puppeteer/lib/FrameManager.js:120:37( 在process._tickCallback(内部/进程/next_tick.js:68:7( --异步-- 在框架。(/usr/local/app/node_modules/puppeteer/lib/helper.js:111:15( at Page.goto (/usr/local/app/node_modules/puppeteer/lib/Page.js:674:49( 在佩奇。(/usr/local/app/node_modules/puppeteer/lib/helper.js:112:23( at puppeteer.launch.then (/usr/local/app/modules/analisajabatan/methods/pdfpuppeteer.js:60:20( 在process._tickCallback(内部/进程/next_tick.js:68:7(

来自木偶师文档:

当远程服务器返回任何有效的 HTTP 状态代码(包括 404"未找到"和 500"内部服务器错误"(时,page.goto 不会引发错误

因此,如果 URL 有效,服务器似乎不会发送响应。

最新更新