NodeJS res.send不是一个函数

时间:2017-05-25 08:39:08

标签: javascript node.js express

我尝试使用以下代码,但是它给了我一个错误," res.send不是一个函数"。请帮我。

以下是代码:

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

var app = express();
app.get('/', function(res, req  ) {
        res.send('Hello World');
    });

var server = app.listen(8888, function(){
        var host = server.address().address;
        var port = server.address().port;
        console.log("Example app listening at http://%s:%s", host, port);
    });

服务器正常运行并正在连接。显示的完整错误是这样的:

  

TypeError:res.send不是函数       在c:\ wamp \ www \ node \ server.js:8:13       在Layer.handle [as handle_request](c:\ wamp \ www \ node \ node_modules \ express \ lib \ router \ layer.js:95:5)       在下一个(c:\ wamp \ www \ node \ node_modules \ express \ lib \ router \ route.js:137:13)       在Route.dispatch(c:\ wamp \ www \ node \ node_modules \ express \ lib \ router \ route.js:112:3)       在Layer.handle [as handle_request](c:\ wamp \ www \ node \ node_modules \ express \ lib \ router \ layer.js:95:5)       在c:\ wamp \ www \ node \ node_modules \ express \ lib \ router \ index.js:281:22       在Function.process_params(c:\ wamp \ www \ node \ node_modules \ express \ lib \ router \ index.js:335:12)       在下一个(c:\ wamp \ www \ node \ node_modules \ express \ lib \ router \ index.js:275:10)       at expressInit(c:\ wamp \ www \ node \ node_modules \ express \ lib \ middleware \ init.js:40:5)       在Layer.handle [as handle_request](c:\ wamp \ www \ node \ node_modules \ express \ lib \ router \ layer.js:95:5)

6 个答案:

答案 0 :(得分:19)

根据API reference,第一个参数是请求,然后是响应

所以

    app.get('/', function(req, res) {
      res.send("Rendering file")
    }

应该修复它。

答案 1 :(得分:15)

您错误地获得了resreq个参数。

app.get('/', function(res, req)

应该是

app.get('/', function(req, res)

来源:API docs

答案 2 :(得分:3)

交换请求& res:function(req, res)

答案 3 :(得分:0)

您应该首先使用req参数,然后使用res作为第二个参数,这将毫无问题地起作用

app.get('/', function(req, res) {
 res.send("Rendering file")
}

答案 4 :(得分:0)

在某些情况下,您可以改变主意,可以这样写。 注意:默认情况下,在本地计算机上运行节点服务器时。您的主机将始终为本地主机:“您的愿望端口” 谢谢!

const express = require("express")
const app = express();
const port = 8888;
// for redering hello you don't need to require fs
const fs = require("fs")

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


app.listen(port, () => console.log(`Listening on ${port}`))

答案 5 :(得分:0)

您正在编写的中间件函数是一个回调函数,应该遵循声明参数 function(req, res, next) req 用于请求 res 用于响应和 next 用于进一步操作的顺序。您可以参考API reference

所以正确的代码是:

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

var app = express();
app.get('/', function(req, res) {
        res.send('Hello World');
    });

var server = app.listen(8888, function(){
    var host = server.address().address;
    var port = server.address().port;
    console.log("Example app listening at http://%s:%s", host, port);
});