【问题标题】:Using Express.js and Puppeteer with multiple URL at the same time同时使用多个 URL 的 Express.js 和 Puppeteer
【发布时间】: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被处理

结果

预期结果:
标签 1https://domain2.com/1.mp4 标签 2https://domain2.com/2.mp4

得到了结果:
标签 1https://domain2.com/1.mp4 标签 2https://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=") 这就是原因
  • 哦等等让我试试

标签: node.js express puppeteer


【解决方案1】:

搞定了。这是我这边的错误,我移动了


    var id = req.params.id;
    var episode = req.params.video;
    url = `www.domain2.com/${id}/${video}`;
    // console.log(object.response);

await page.goto(url, {附近

【讨论】:

    猜你喜欢
    • 2018-02-27
    • 1970-01-01
    • 2019-10-24
    • 1970-01-01
    • 2017-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多