未定义res nodejs + express

时间:2019-03-15 15:50:26

标签: node.js

nodejs出现问题。我试图进行httprequest以获得一些信息,然后我想将其解析为JSON文件并使用该文件。

function richiesta() {
  var data_store = {}
  data_store["lista"] = []

  var uri = "https://ghibliapi.herokuapp.com/films"
  var options = {
    uri: uri,
    json: true
  };

  request(options, function(error, response, body) {
    var status = body["status"]
    var titolo = body['0']["title"]

    data_store["lista"]["titolo"] = titolo
    console.log(data_store)
    res.send(data_store)
  });

}

为什么我遇到这个问题? “未定义Res”?我已经尝试放置响应,但是如果执行此操作,我将收到“ Response.send不是一个函数”,因此我不明白问题出在哪里。

2 个答案:

答案 0 :(得分:1)

将res作为函数的参数传递,并在路由器回调中这样调用它:

router.get("/", function(req, res, next) {
  richiesta(res);
});
function richiesta(res) {
  var data_store = {}
  data_store["lista"] = []

  var uri = "https://ghibliapi.herokuapp.com/films"
  var options = {
    uri: uri,
    json: true
  };

  request(options, function(error, response, body) {
    var status = body["status"]
    var titolo = body['0']["title"]

    data_store["lista"]["titolo"] = titolo
    console.log(data_store)
    res.send(data_store)
  });

答案 1 :(得分:0)

如果不将参数传递给函数,则会出现此错误。

示例:

var express = require('express');
var http = require('http');
var fs = require('fs');

var app = express();    

app.get('/', (req, res)=> {
    res.send("get works");
})

app.post('/', ()=> {
    res.send('post works');
})

app.listen('8080', ()=> {
    console.log('server started');
});

更改为:

app.post('/', (req, res )=> {
    res.send('post works');
})