【问题标题】:Node.js res.send is not a functionNode.js res.send 不是一个函数
【发布时间】:2017-10-25 20:08:35
【问题描述】:

我正在尝试以下代码,但它给了我一个错误,“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) 在 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)

【问题讨论】:

    标签: javascript node.js express


    【解决方案1】:

    根据API reference,第一个参数总是包含请求req,然后是响应res。

    所以将第一个参数 res 更改为 req:

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

    它应该修复它。

    【讨论】:

    • 这对我也有帮助。只需交换res 和req。谢谢
    【解决方案2】:

    您的 res 和 req 参数设置错误。

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

    应该是

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

    来源:API docs。

    【讨论】:

      【解决方案3】:

      交换请求和资源:function(req, res)

      【讨论】:

        【解决方案4】:

        你应该首先使用 req 参数和 res 作为第二个参数,这将毫无问题地工作

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

        【讨论】:

          【解决方案5】:

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

          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}`))
          

          【讨论】:

            【解决方案6】:

            您正在编写的中间件函数是一个回调函数,应遵循声明参数的顺序: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);
            });
            

            【讨论】:

              猜你喜欢
              • 2021-06-23
              • 2018-03-25
              • 2021-07-24
              • 2016-09-10
              • 2020-06-15
              • 2019-03-12
              • 1970-01-01
              • 2017-09-19
              • 1970-01-01
              相关资源
              最近更新 更多