res.send不是一个函数

Dev*_*fic 0 javascript node.js express

我正在进行api调用并收到数据,但是,我无法将数据发送回我的js文件.我尝试使用res.send但是我收到了一个错误.我似乎无法弄清楚如何将信息发送回javascript文件.(我把我的密钥从请求链接中取出.但是出于安全原因,我从api调用中获取数据).我遇到的唯一问题是将数据返回到前端javascript文件.

这是发送原始请求的Javascript文件:

/ ********** options button function makes api call to get selected cities forecast *****************

function getCityForecast(e){


     var id = document.getElementById('cities');
     var getValue = id.options[id.selectedIndex].value;
     var suffix = getValue + ".json";

     var newObj = JSON.stringify({link : suffix});

     var xhr = new XMLHttpRequest();

     xhr.open("POST", "http://localhost:3000/", true);
     xhr.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
     xhr.send(newObj);

     xhr.onreadystatechange = function(){
         if(xhr.readyState === 4){
             console.log(xhr.response);
             console.log('recieved');
         } else {
             console.log('error');
         }
     }
}
Run Code Online (Sandbox Code Playgroud)

我的server.js文件如下所示:

var express = require('express');
var app = express();
var bodyParser = require('body-parser');
var http = require('http');
var path = require('path');
var request = require('request');


// ****************** Middle Ware *******************
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());

app.use(express.static(__dirname + '/public'));



var retrievedString;
// **************** Post Request *******************
app.post('/', function(req, res){

var link = "http://api.wunderground.com/api/key/forecast";
retrievedString = link.concat(req.body.link);

request = http.get(retrievedString , function(res){
    var body = '';

    res.on('data', function(data){
         body += data;      
    });

    res.on('end', function(){
        var parsed = JSON.parse(body);
        console.log(parsed.forecast.txt_forecast);
        res.send(parsed.forecast.txt_forecast);
    });
})

    .on('error', function(e) {
        console.log("Got error: " + e.message);
    });
});

app.listen(3000, function() { console.log('listening')});
Run Code Online (Sandbox Code Playgroud)

Syl*_*ero 8

您正在重载变量的定义,res这也是您称为Express路由处理程序方法的响应变量.在请求的回调函数中,为该变量使用不同的名称 - 例如:

request = http.get(retrievedString , function(resDoc){
Run Code Online (Sandbox Code Playgroud)