API密钥在localhost上工作,但不在Heroku上工作

时间:2016-10-02 10:11:09

标签: node.js heroku

我有一个应用程序,它使用Google Maps API和Meetup.com的API将事件加载到地图上。 Meetup的我的API密钥存储在我的.zshrc文件的底部并导出,它在localhost上运行正常。但是当我尝试在Heroku上使用该应用程序时,API会返回500.

这是我的meetup.js控制器:

var request = require('request-promise');

function getEvents(req, res) {

  request.get({
    url: "https://api.meetup.com/2/open_events",
    qs: {
      key: process.env.MEETUP_API_KEY,
      lat: req.query.lat,
      lon: req.query.lng,
      category: req.query.category,
      radius: req.query.radius || 1,
      sign: true
    },
    json: true
  })
  .then(function(response) {
    res.status(200).json(response.results);
  })
  .catch(function(err) {
    console.log(err);
    res.status(500).json(err);
  })
}

function getCategories(req, res) {

  request.get({
    url: "https://api.meetup.com/2/categories",
    qs: {
      key: process.env.MEETUP_API_KEY,
      sign: true
    },
    json: true
  })
  .then(function(response) {
    res.status(200).json(response.results);
  })
  .catch(function(err) {
    console.log(err);
    res.status(500).json(err);
  })
}

module.exports = {
  getEvents: getEvents,
  getCategories: getCategories
}

我在package.json中的依赖项:

  "dependencies": {
    "bcrypt": "^0.8.7",
    "bluebird": "^3.4.6",
    "body-parser": "^1.15.2",
    "cors": "^2.8.1",
    "express": "^4.14.0",
    "jsonwebtoken": "^7.1.9",
    "moment": "^2.15.0",
    "mongoose": "^4.6.0",
    "mongoose-beautiful-unique-validation": "^5.0.1",
    "morgan": "^1.7.0",
    "request": "^2.74.0",
    "request-promise": "^4.1.1"
  }

感谢。

1 个答案:

答案 0 :(得分:0)

固定。 Heroku没有为API密钥分配值,因此在工作目录中,可以使用

指定值
heroku config add:MEETUP_API_KEY="[key value here]"