Node.js 在生产模式下从客户端调用Express route 503时出错

Node.js 在生产模式下从客户端调用Express route 503时出错,node.js,express,heroku,Node.js,Express,Heroku,我是nodejs和express的新手,我有一条简单的express路线,如下所示 const express=require(“express”); const fetch=require(“节点获取”); require(“dotenv”).config(); 常量app=express(); 使用(express.json()); use(express.urlencoded({extended:false})); app.get(“/api/test”),函数(请求、响应){ respo

我是nodejs和express的新手,我有一条简单的express路线,如下所示

const express=require(“express”);
const fetch=require(“节点获取”);
require(“dotenv”).config();
常量app=express();
使用(express.json());
use(express.urlencoded({extended:false}));
app.get(“/api/test”),函数(请求、响应){
response.send(“helloworld!”);//当我从url www…com/api/test尝试时,这个功能会起作用
});
get(“/api/fetchData”,函数(req,res){//这在生产环境中不起作用
获取(process.env.API_路径{
方法:“张贴”,
标题:{“内容类型”:“应用程序/json”},
正文:JSON.stringify({
查询:`…`//graphql
}),
})
。然后((正文)=>{
返回body.json();
})
.然后((数据)=>res.send(数据))
.catch((错误)=>{
控制台日志(err);
});
});
if(process.env.NODE_env==“生产”){
应用程序使用(快速静态(“客户端/构建”);
}
const PORT=process.env.PORT | | 8080;
log(`listing on PORT${PORT}`);
app.listen(端口);
我正在从客户端调用
/api/fetchData
,作为

useEffect(() => {
 axios
      .get("/api/fetchData")
      .then(...)
  }, []);

它在本地主机上运行良好(使用my package.json中的“…:8080””代理)。但当我在heroku上部署应用程序时,api数据不会显示。我检查了控制台和网络选项卡,请求url是
https://myapp.herokuapp.com/api/fetchData
并显示
加载资源失败:服务器在我的控制台中响应状态为503(服务不可用)
。我一直在尝试修复它,但没有找到解决方案,我是否缺少添加内容,或者我在这里做错了什么

我还检查了heroku日志,我的日志中有一个相同的错误,但我不知道如何解决它


2021-03-28T07:59:59.824758+00:00 heroku[路由器]:at=error code=H12 desc=“Request timeout”method=GET path=“/api/fetchData”host=myapp.herokuapp.com Request\u id=89d4dd86-890c-4722-9abc-0d058c343073 fwd=“210.14.110.62”dyno=web.1 connect=0ms service=30000ms status=503字节=0协议=https

Heroku的H12错误代码意味着重新请求需要超过30秒才能完成(如他们的文档中所述:)
你的逻辑中有些东西花了太多时间。可能您正在尝试访问本地可用但在heroku env中不可用的资源?

我想这是因为我在本地使用了
API\u ROUTE
作为env变量,但没有在heroku平台上声明该变量。但我不知道为什么“网络”选项卡中的请求url显示为
https://myapp.herokuapp.com/api/fetchData
这是不正确的。我在我的命令上设置了API_ROUTE=myurl,效果很好。

谢谢你的建议,在我的情况下是因为不同的错误。太棒了。将你的答案标记为正确答案,以帮助将来可能有相同问题的其他人!谢谢,我会在冷却结束后立即标记它。