1. ホーム
  2. javascript

[解決済み】TypeError:res.jsonは関数ではありません。

2022-02-05 23:44:35

質問

2つのjsonを送信しようとしているのですが、うまくいきません。次のように表示されます。 TypeError: res.json is not a function しかし、なぜこのようなことが起こるのか理解できません。何かいい方法はないでしょうか?ありがとうございます!

app.post('/danger', function response(req, res) {
    let placeId = req.body.data;
    let option = {
      uri: 'https://maps.googleapis.com/maps/api/directions/json?',
      qs: {
        origin:`place_id:${placeId[0]}`, destination: `place_id:${placeId[1]}`,
        language: 'en', mode: 'walking', alternatives: true, key: APIKey
      }
    };
    rp(option)
      .then(function(res) {
        let dangerRate = dangerTest(JSON.parse(res), riskGrid);
        res.json({ data: [res, dangerRate]});
      })
      .catch(function(err) {
        console.error("Failed to get JSON from Google API", err);
      })
});

解決方法は?

を上書きしているからです。 res 変数で .thenrp 関数を使用します。

app.post('/danger', function response(req, res) { //see, "res" here was being overwritten
   ..
   ..
   rp(option).then(function(response) { //change the variable name of "res" to "response" (or "turtles", who cares, just dont overwrite your up most "res")