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

Node.js接口本地正常返回JSON 部署Heroku后返回空如何修复

问题定位步骤
  • 第一步:查看Heroku应用运行日志
    执行heroku logs --tail查看接口请求时的报错信息,重点关注服务启动报错、接口请求时的异常栈
  • 第二步:验证基础服务可用性
    先访问https://reels2.herokuapp.com/api/,看是否能正常返回App Running...的响应,确认服务本身启动成功,路由挂载正常
  • 第三步:排查Instagram接口访问限制
    本地运行时用的是个人网络IP,Heroku的机房IP大概率已经被Instagram限制访问,导致Instagram(ps)请求无返回或者被拦截
已知代码问题&修复方案

1. 修复package.json启动脚本错误

你的package.json中start脚本写的是node apps.js,但实际入口文件是app.js,文件名多了一个s,会导致Heroku启动服务直接失败,修改为:

"scripts": {
  "test": "echo \"Error: no test specified\" && exit 1",
  "start": "node app.js"
}

2. 修复依赖包版本问题

你当前package.json中instagram-downloader的版本号为0.0.0,属于无效版本号,Heroku安装依赖时会拉取该包的初始版本,大概率功能不可用。你可以在本地开发环境执行npm list instagram-downloader查看实际可用的版本号,替换掉package.json中的0.0.0即可。

3. 优化接口逻辑,避免未捕获异常

你当前的代码混用了async/await和.then链式调用,且变量ps未声明作用域,同时没有处理Instagram返回数据为空的边界情况,优化后的routes.js代码如下:

const express=require('express');
const Instagram = require('instagram-downloader');

const router=express.Router();

router.get('/',(req,res)=>{
    res.json("App Running...")
})

router.get("/inst", async (req,res)=>{
  // 先判断参数是否存在
  if(!req.query.ps) {
    return res.status(400).json({error: "缺少ps参数"})
  }
  const ps = req.query.ps
  try {
    const data = await Instagram(ps)
    // 增加边界判断,避免解构失败报错
    if(!data?.entry_data?.PostPage) {
      return res.status(500).json({error: "Instagram返回数据格式异常"})
    }
    const PostPage = data.entry_data.PostPage
    const mediaList = PostPage.map(post => post.graphql.shortcode_media)
    // 判空后返回
    if(mediaList.length === 0) {
      return res.status(404).json({error: "未获取到对应媒体资源"})
    }
    res.json(mediaList[0].video_url)
  } catch (error) {
    // 打印错误到日志,方便排查
    console.error("接口请求错误:", error)
    res.status(500).json({error: error.message || "请求失败"})
  }
})

module.exports=router;

4. 解决Instagram IP封禁问题

如果修复以上问题后仍然返回异常,就是Heroku的IP被Instagram限制访问了,可以采取以下方案:

  • 配置代理池,在请求Instagram时使用代理IP绕过访问限制
  • 更换Instagram数据抓取的第三方包,选择支持代理配置的抓取工具
  • 改用Instagram官方Graph API,申请开发者权限后调用官方接口获取数据,稳定性更高

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 08:24:04