【发布时间】:2022-02-08 23:51:42
【问题描述】:
我在使用 express.Router() 和 Puppeteer 时遇到问题。当我尝试将数据(即 URL)发送到同时在 PM2 上运行的 Node.JS 实例时,它们返回相同的值。
视觉样本:
浏览器:谷歌浏览器 64 位 Windows
标签 1:https://api.domain.com/wp/01
选项卡 2:https://api.domain.com/wp/02
同时按下回车键发送请求
节点实例:
app.get("/:id/:video", function (req, res) {
var id = req.params.id;
var episode = req.params.episode;
url = `www.domain2.com/${id}/${video}`;
rs(url, (err, resp, html) => {
(async () => {
const browser = await puppeteer.launch({
args: ["--no-sandbox"],
});
const page = await browser.newPage();
await page.on("response", async (response) => {
if (response.url().includes("api.php?id=")) {
var data = JSON.parse(JSON.stringify(await response.json()));
var sourceOne = data.source.filter(function (el) {
return el.label == "devVideo";
});
if (one != "") {
return res.status(200).json({
link: sourceOne[0].file,
});
}
}
}
});
// console.log(object.response);
await page.goto(url, {
waitUntil: "networkidle0",
// Remove the timeout
timeout: 0,
});
await page.close();
await browser.close();
})();
});
});
浏览器发送给nodejs的url被处理
结果
预期结果:
标签 1:https://domain2.com/1.mp4
标签 2:https://domain2.com/2.mp4
得到了结果:
标签 1:https://domain2.com/1.mp4
标签 2:https://domain2.com/1.mp4
正如您在“得到结果”中看到的那样,结果是相同的。现在我很困惑......
【问题讨论】:
-
await page.on("response", async (response) => {没有意义。.on注册了一个使用回调而不是承诺的事件处理程序。我不太确定您要实现什么目标,但在事件处理程序触发之前,我不会执行任何.close()调用。 -
在前端我使用 VUE.JS 和 Axios 发送请求
-
@ggorlen 我从 url
await page.goto(url获取所有响应(网络活动)并捕获response.url().includes("api.php?id=")这就是原因 -
哦等等让我试试