如何调试Heroku不执行外部API请求



我在heroku上部署了我的应用程序,它的部分功能与我一样"服务器";使用mongoDB图集验证用户并向Yelp的api执行api请求的侧代码。我的应用程序可以很好地对用户进行身份验证,但当我请求访问附近的地方时,我会在控制台中收到这个错误。

GET https://my-first-trip.herokuapp.com/category/21.3420389/-157.7992015/pizza 503 (Service Unavailable)

以下是位于根目录中的server.js的代码:

require('dotenv').config()
const express = require('express');
const app = express();
const cors = require("cors");
const axios = require('axios');
const mongoose = require("mongoose")
const User = require('./models/user')
const session = require('express-session')
const bcrypt = require('bcrypt')
const MongoStore = require('connect-mongo')
const saltRounds = 6
const path = require('path')
mongoose.connect(process.env.ATLAS_URI)
app.use(express.json());
app.use(cors({
origin: ["http://localhost:3000"],
methods: ["GET", "POST", "DELETE"],
credentials: true
}))
// app.use(express.urlencoded())
app.set('trust proxy', 1) // trust first proxy
app.use(session({
secret: '',
resave: false,
saveUninitialized: true,
cookie: { secure: false },
store: MongoStore.create({
mongoUrl: process.env.ATLAS_URI,
// collectionName: 'users'
})
}))
app.use(express.static(path.join(__dirname, "client", "build")))
app.get("/category", (req, res) => {
const config = {
method: 'get',
url: '...' ,
headers: {
'Authorization': process.env.API_KEY
}
};
axios(config)
.then((response) => {
res.json(response.data)
// console.log(response.data);
})
.catch((error) => {
res.json(error) //this returns 'request failed with status code 400'
});
});
app.get("*", (req, res) => {
res.sendFile(path.join(__dirname, "client", "build", "index.html"));
});
app.listen(process.env.PORT || 5000);

所以唯一不起作用的路由是CCD_ 3。在heroku cli中,我得到了code=H12desc=Request timeout。我非常确信我的yelpapi查询是一个快速而廉价的查询。我不知道如何进一步调试。

编辑:已解决。。。我在heroku中的配置var在我的密钥中有额外的引号。我输入的是'key123'而不是key123。我希望有一种方法可以告诉我的错误是什么。状态代码400(请求失败(太宽

您可以使用Heroku日志来详细了解您的错误:

我总是使用

heroku logs -n 1000 --tail

或者你也可以使用附加组件,比如papertrail

编辑:尝试对API调用变量进行硬编码。

最新更新