【问题标题】:Can not get response from API on heroku无法从 Heroku 上的 API 获得响应
【发布时间】:2021-09-04 18:23:17
【问题描述】:

我已经制作了一个从 api 获取数据的 Node.js 应用程序 'https://cdn-api.co-vin.in/api/v2/appointment/sessions/public/findByPin?pincode=823003&date=21-06-2021 它在本地主机上工作得很好但是当我将它部署在heroku上时没有得到回应。我在 heroku 上使用免费套餐。 这是我的控制台 Heroku CLI logs

这是我的代码

require('dotenv').config();
const express = require('express');
const bodyParser = require('body-parser');
const https = require('https');
const nodemailer = require('nodemailer');

const app = express();
app.use(bodyParser.urlencoded({extended: true}));

function join(t, a, s) {
   function format(m) {
      let f = new Intl.DateTimeFormat('en', m);
      return f.format(t);
   }
   return a.map(format).join(s);
}

app.get("/", (req, res) => {
  res.sendFile(__dirname + "/index.html");
})

app.post("/", (req, res)=>{
  let options = [{day: '2-digit'}, {month: '2-digit'}, {year: 'numeric'}];
  let today = join(new Date, options, '-');
  let pin = req.body.pin;
  const email = req.body.email;
  let centers = "";
  console.log(pin);

  const cowin_endpoint = 'https://cdn-api.co-vin.in/api/v2/appointment/sessions/public/findByPin?pincode=' + pin + '&date=' + today;
  https.get(cowin_endpoint, (response)=>{
    response.on('data', (data)=>{
      const x = JSON.parse(data);
      // console.log(x);

      let i = x.sessions.length;
      (x.sessions).forEach((sess)=>{
          var centerDetails = "NAME:- " + sess.name + "\nADDRESS:- " + sess.address + "\nVACCINE:- " + sess.vaccine + "\nAGE:- " + sess.min_age_limit + "+\nDOSE1:- " + sess.available_capacity_dose1 + "\nDOSE2:- " + sess.available_capacity_dose2;
          centers += centerDetails + "\n\n";
      })


      var transporter = nodemailer.createTransport({
        service: 'gmail',
        auth: {
          user: process.env.MAIL_ID,
          pass: process.env.PASSWORD
        }
      });

      var subject = "There are " + i + " vaccination centers near your area."

      var mailOptions = {
        from: process.env.MAIL_ID,
        to: email,
        subject: subject,
        text: centers
      };

      transporter.sendMail(mailOptions, function(error, info){
        if (error) {
          console.log(error);
        } else {
          console.log('Email sent: ' + info.response);
        }
      });


      // console.log(centers);
    })
  })
  // res.sendFile(__dirname + "/success.html");
  res.send("Successfully sent !")
})

app.listen(process.env.PORT || 3000, ()=>{
  console.log("Server is up and running..");
})

【问题讨论】:

    标签: node.js api express heroku https


    【解决方案1】:

    错误日志显示第 34 行中的“x.sessions”未定义。 使用 if 语句检查“x.sessions”是否未定义。

    顺便说一句,从错误日志中模糊您的电子邮件!

    【讨论】:

    • "x.sessions" 在这种情况下是未定义的,但是当我在本地运行它时它工作得很好。
    • 由于我无权访问您的配置变量,因此无法在我的机器上尝试该代码 sn-ps。尝试在控制台中记录变量,并查看您的环境变量是否已设置。
    猜你喜欢
    • 2020-08-25
    • 2022-11-23
    • 2020-05-08
    • 2017-11-28
    • 2023-01-04
    • 2016-10-05
    • 2016-03-18
    • 1970-01-01
    相关资源
    最近更新 更多