Node.js res.send 不是一个函数
Posted
技术标签:
【中文标题】Node.js res.send 不是一个函数【英文标题】:Node.js res.send is not a function 【发布时间】: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)
【问题讨论】:
【参考方案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);
);
【讨论】:
以上是关于Node.js res.send 不是一个函数的主要内容,如果未能解决你的问题,请参考以下文章
认识 Express 的 res.send() 和 res.end()