puppeteer的使用
1.puppeteer用法
//引入
const puppeteer = require("puppeteer");
//绘制网页
let htmlTemp = `页面内容`
//生成网页文件
fs.writeFileSync(
path.join(__dirname, `../../../static/pdf/${fileName}.html`),
htmlTemp,
(err) => {}
);
//初始化puppeteer的浏览器进程
const browser = await puppeteer.launch({
// executablePath: pathToExtension,
// headless: true,
args: [
"--disable-infobars",
"--no-sandbox",
"--disable-setuid-sandbox",
],
// ignoreHTTPSErrors: true,
});
const page = await browser.newPage();
//使用初始化的浏览器访问自己生成的网页文件
await page.goto(`${Key.viewUrl}/pdf/${fileName}.html`);
//生成pdf文件
await page.pdf({
path: path.join(__dirname, `../../../static/pdf/${fileName}`),
format: "A4",
margin: {
top: "20px",
bottom: "0",
left: "30px",
right: "30px",
},
});
//关闭
await browser.close(`${Key.viewUrl}/pdf/${fileName}`);
详细参数自行查阅官方文档。官方文档
2.部署docker
通过DockerFile安装chromium(puppeteer依赖的chrome内核),并安装pm2来部署node程序。
- DockerFile文件
FROM node:12
RUN apt-get update \
&& apt-get install -y wget gnupg \
&& wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - \
&& sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' \
&& apt-get update \
&& apt-get install -y google-chrome-stable fonts-ipafont-gothic fonts-wqy-zenhei fonts-thai-tlwg fonts-kacst fonts-freefont-ttf libxss1 \
--no-install-recommends \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /server
RUN npm i pm2 -g
RUN npm i
EXPOSE 3001
CMD ["pm2-runtime", "start", "process.json"]
- process.json 文件,具体参数参照pm2官网 官方文档
{
"name": "xxx",
"script": "./app.js",
"exec_mode": "cluster",
"instances": 4,
"wait_ready": true,
"listen_timeout": 10000,
"kill_timeOut": 20000,
"env": {
"NODE_ENV": "dev",
}
}
3.检验
docker exec -it xxx(服务名称) /bin/sh
pm2 list
pm2显示结果