CSS 没有在 puppeteer 里面渲染 docker
CSS not rendering at puppeteer inside docker
我使用 puppeteer 进行了自动浏览器测试。我 运行 他们在 Circle CI 使用默认的 Circle CI windows 机器。现在我正在尝试更改为基于 Microsoft Debian 机器(网站是 .NET)的 docker。我在这台机器上安装了铬。问题是 CSS 没有呈现。我使用 page.on request/response 并请求 css,响应为 200。我寻找可以禁用的配置,但我没有找到它 - 在 Whosebug 也没有找到。
存储库:https://github.com/darakeon/dfm/
B运行ch现在:4.1.5.0(等我打完版本就升master了)
docker 文件位于 docker 文件夹中。它也在 Docker Hub,我的用户是 darakeon。现在名字是 darakeon/net-circleci。当我解决这个问题时,我会重命名它,分成两台不同的机器——一台基于微软,只有 libman,另一台基于第一台,也可以 运行 操纵木偶。
测试文件夹:site/Tests/Browser
我用来 运行 测试的脚本:.circleci/browser/run-tests.sh
你花在解决问题上的时间越多,解决方案就越荒谬。请叫我白痴,但帮我解决这个问题...
发现问题。方法如下:
我在网络上的另一个站点上使用 page.screenshot
来检查 css 是否在其上呈现。它是。诡异的。在寻找解决方案之后,我总是发现有人教如何不显示 css、拦截请求并停止它。所以我拦截了请求以查看是否正在请求 css:
await page.setRequestInterception(true);
page.on('request', (req) => {
console.log(req.url(), req.resourceType())
req.continue();
})
鉴于请求没问题,我去查看响应:
page.on('response', (r) => {
if (r.status() >= 400)
console.error(r.url(), r.status())
})
惊喜!我的主要 css 返回 404。但是,如果它在 windows 有效,为什么?简单的。 Windows 不关心你是否调用 Bootstrap、bootstrap、bOOTSTRAP 或 BoOtStRap,它们都会搜索同一个文件。 Linux 完全相同的情况下认为是正确的。
因此,当您从 windows 获取 .NET 站点并将其放置在 Linux 时,请检查所有内容。
我使用 puppeteer 进行了自动浏览器测试。我 运行 他们在 Circle CI 使用默认的 Circle CI windows 机器。现在我正在尝试更改为基于 Microsoft Debian 机器(网站是 .NET)的 docker。我在这台机器上安装了铬。问题是 CSS 没有呈现。我使用 page.on request/response 并请求 css,响应为 200。我寻找可以禁用的配置,但我没有找到它 - 在 Whosebug 也没有找到。
存储库:https://github.com/darakeon/dfm/
B运行ch现在:4.1.5.0(等我打完版本就升master了)
docker 文件位于 docker 文件夹中。它也在 Docker Hub,我的用户是 darakeon。现在名字是 darakeon/net-circleci。当我解决这个问题时,我会重命名它,分成两台不同的机器——一台基于微软,只有 libman,另一台基于第一台,也可以 运行 操纵木偶。
测试文件夹:site/Tests/Browser
我用来 运行 测试的脚本:.circleci/browser/run-tests.sh
你花在解决问题上的时间越多,解决方案就越荒谬。请叫我白痴,但帮我解决这个问题...
发现问题。方法如下:
我在网络上的另一个站点上使用 page.screenshot
来检查 css 是否在其上呈现。它是。诡异的。在寻找解决方案之后,我总是发现有人教如何不显示 css、拦截请求并停止它。所以我拦截了请求以查看是否正在请求 css:
await page.setRequestInterception(true);
page.on('request', (req) => {
console.log(req.url(), req.resourceType())
req.continue();
})
鉴于请求没问题,我去查看响应:
page.on('response', (r) => {
if (r.status() >= 400)
console.error(r.url(), r.status())
})
惊喜!我的主要 css 返回 404。但是,如果它在 windows 有效,为什么?简单的。 Windows 不关心你是否调用 Bootstrap、bootstrap、bOOTSTRAP 或 BoOtStRap,它们都会搜索同一个文件。 Linux 完全相同的情况下认为是正确的。
因此,当您从 windows 获取 .NET 站点并将其放置在 Linux 时,请检查所有内容。