【问题标题】:Why I cannot send a string in send in express?为什么我不能以快递方式发送字符串?
【发布时间】:2022-02-14 01:44:49
【问题描述】:

我有以下代码从外部 API 获取数据:

const axios = require('axios');
const express =  require('express');

const app = express()

app.get("/coins", (req, res) => {
    console.log("/coins test");

    axios.get("https://www.cryptingup.com/api/markets")
       .then(resultat=>{
         console.log(resultat.data.markets)
           res = resultat.data.markets
           myS="";

               res.forEach(element=>{
               console.log(element.exchange_id);
               myS=myS+element.exchange_id;
            });

            res.send(myS);
         
       })
       .catch(error => console.log(`error is ${error}`));
})

port = 3000

app.listen(port, ()=>{console.log(`The server has started and is listening on port number: ${port}`);});

当我执行代码时,我得到以下信息:

error is TypeError: res.send is not a function

我不知道我的错误在哪里。

【问题讨论】:

  • 您正在用res = resultat.data.markets 覆盖res
  • 重用变量名时要小心。
  • 您确实需要定义所有变量。

标签: javascript node.js express


【解决方案1】:

您已经用这行代码覆盖了传递给函数的res 的值:

res = resultat.data.markets

所以,在这样做之后,原来的res 就消失了,所以你不能再打电话给res.send()

定义你自己的单独命名的变量:

app.get("/coins", (req, res) => {
    console.log("/coins test");

    axios.get("https://www.cryptingup.com/api/markets")
       .then(resultat => {
           console.log(resultat.data.markets);
           let markets = resultat.data.markets;
           let myS = "";

           markets.forEach(element => {
               console.log(element.exchange_id);
               myS = myS + element.exchange_id;
           });

           res.send(myS);
         
       })
       .catch(error => console.log(`error is ${error}`));
})

此外,您必须声明使用letconst 的所有变量。


仅供参考,您可以简化一下:

let myS = resultat.data.markets.map(element => element.exchange_id).join("");
res.send(myS);

【讨论】:

    【解决方案2】:

    您的问题是您正在抓取传递给 express 回调函数的“res”对象,但是无论出于何种原因,您将其重新分配为等于您的 axios 调用的某些结果,基本上删除了“资源”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-05
      • 1970-01-01
      • 2011-12-29
      • 1970-01-01
      • 1970-01-01
      • 2023-03-16
      • 1970-01-01
      相关资源
      最近更新 更多