我无法在码头集装箱内部运行我的单元测试。我的主机是一个MacOS,带有苹果硅M1 (arm64)芯片。我也尝试遵循“木偶人”的文献资料的指示,但它们是针对amd64的。有什么建议吗?
发布于 2022-03-12 18:31:30
由于某些原因,直接安装木偶机NPM包将无法工作,遗憾的是,GitHub中的官方puppeteer文档与arm64体系结构不兼容。
我就是这样准备我的Dockerfile的:
FROM node:16
RUN apt-get update \
&& apt-get install -y chromium \
fonts-ipafont-gothic fonts-wqy-zenhei fonts-thai-tlwg fonts-kacst fonts-freefont-ttf libxss1 \
--no-install-recommends
USER node # non-root user that comes with `node` images.
WORKDIR /app
COPY --chown=node package.json .
COPY --chown=node package-lock.json .
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD true
ENV PUPPETEER_EXECUTABLE_PATH /usr/bin/chromium
RUN npm install
COPY --chown=node . /app配置的Dockerfile是苹果硅(linux/arm64)的原生文件,也是amd64 (linux/amd64 64)体系结构的本机。
您还必须将--no-sandbox参数传递给代码上的浏览器:
export async function createBrowserInstance(): Promise<puppeteer.Browser> {
return await puppeteer.launch({
args: ['--no-sandbox'], // Required.
headless: true,
});
}额外的标志将禁用浏览器的dev沙箱,因此请确保只访问受信任的页面。否则就没事了。请,来自未来的人,请随时编辑这个答案或评论如何摆脱--no-sandbox的论点。
https://stackoverflow.com/questions/71452265
复制相似问题