You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何部署基于express.js与puppeteer开发的REST API应用

Puppeteer项目部署Heroku无返回问题解决思路
  • Puppeteer运行环境配置
    Heroku默认不包含Chromium运行所需的系统依赖,你需要先在Heroku项目的设置页添加Puppeteer对应的官方buildpack。同时要修改你爬虫文件中Puppeteer的启动配置,新增--no-sandbox、--disable-setuid-sandbox、--headless=new三个启动参数,无界面环境下缺少这些参数会导致浏览器无法启动,爬虫直接报错。
  • 路由逻辑优化
    你当前的根GET路由中连续调用了3次scrapeProductSecond(),每一次调用都会重新启动浏览器执行爬取逻辑,不仅会造成数据不一致,还会大幅拉长请求响应耗时。建议调整为仅调用一次该函数,再从返回结果中解构出你需要的三个字段:
    app.get('/', async(req, res) =>{
      const scrapeRes = await scrapeProductSecond()
      const {echipeAcasa, echipeDeplasare, theIds} = scrapeRes
      console.log(typeof echipeAcasa, typeof echipeDeplasare, typeof theIds);
      console.log(echipeAcasa, echipeDeplasare, theIds);
      res.status(201).send([echipeAcasa, echipeDeplasare, theIds])
    })
    
  • 超时与异常处理
    Heroku的HTTP请求默认超时时间为30秒,爬虫耗时超过30秒会被平台主动断开连接。你可以优化爬虫逻辑,复用Puppeteer的浏览器实例,不要每次请求都重新启动浏览器,能大幅降低请求耗时。同时建议给所有路由的异步逻辑套上try/catch捕获异常,出错时返回对应的错误信息,方便排查具体故障点。
  • 端口日志修正
    你当前监听端口的回调日志打印的是固定的本地端口值,建议修改为打印实际监听的端口,方便排查部署后的端口监听问题:
    app.listen(process.env.PORT || port, ()=> console.log("Example app listening on port " + (process.env.PORT || port)))
    

内容的提问来源于stack exchange,提问作者Tom Ghe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 17:24:02