小编And*_*091的帖子

Puppeteer 页面不想在无头模式下完全加载

这是我的代码:

// Open the browser
let browser = await puppeteer.launch({
    args: ["--no-sandbox"]
});
let page = await browser.newPage();

navPromise = page.waitForSelector('#js_boite_reception').then(() => {
    console.log('received');
});
await page.goto(entMessagesURL);
await navPromise;

// Wait 10 seconds, to be sure that is not because my connection is slow (it's not)
logger.log(`On the messages page (session=${username})`);
await delay(10000);

// Write an html file with the page content
let pageContent = await page.content();
require('fs').writeFileSync('./test.html', pageContent);
Run Code Online (Sandbox Code Playgroud)

received不显示,我得到一个超时错误。但是,如果我删除 waitForSelector 函数,并且只写入test.html文件,我们可以看到:

启用无头模式,部分页面未加载

无头模式 zh

禁用无头模式,加载所有页面

无头模式dis

在无头模式下,仅加载部分页面内容。我不知道为什么。即使我添加一分钟的超时,它也不会加载更多......我该怎么办?

注意:我尝试使用用户代理: …

javascript headless chromium node.js puppeteer

5
推荐指数
2
解决办法
4091
查看次数

如何使用打字稿支持同一模块的多个版本?

我正在制作一个打字稿 npm 包。
它使用discord.js,但 discord.js有两个主要版本:
*
discord.js 11.5 * discord.js v12.0.0-dev

我希望我的模块支持这两个版本。我的意思是,用户可以安装他们想要的 discord.js 版本,并且包将使用好的代码。

对于另一个项目,在 javascript (没有打字稿)中,我使用这个:

const { version } = require("discord.js");
if(version === "12.0.0-dev"){
    // code for v12
} else {
    // code for v11
}
Run Code Online (Sandbox Code Playgroud)

它完美无缺。但是,对于打字稿,由于打字,它更加复杂。事实上,discord.js 类型在 v11 和 v12 中是不一样的,所以我不能用两个版本编译代码:

const { Guild, version } = require("discord.js");
if(version === "12.0.0-dev"){
    Guild.iconURL(); // for v12
} else {
    Guild.iconURL; // for v11
}
Run Code Online (Sandbox Code Playgroud)

如果安装了V12,它会抛出iconURL() doesn't exist on Guild,如果它是V11, iconURL doesn't exist on Guild …

javascript types node.js typescript discord.js

5
推荐指数
1
解决办法
238
查看次数