I'm trying the following code but it's giving me an error, "res.send is not a function". Please help me.
Here's the code:
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);
});
The server is running fine and is connecting. The complete error that is being displayed is something like this:
TypeError: res.send is not a function at c:\wamp\www\node\server.js:8:13 at Layer.handle [as handle_request] (c:\wamp\www\node\node_modules\express\lib\router\layer.js:95:5) at next (c:\wamp\www\node\node_modules\express\lib\router\route.js:137:13) at Route.dispatch (c:\wamp\www\node\node_modules\express\lib\router\route.js:112:3) at Layer.handle [as handle_request] (c:\wamp\www\node\node_modules\express\lib\router\layer.js:95:5) at c:\wamp\www\node\node_modules\express\lib\router\index.js:281:22 at Function.process_params (c:\wamp\www\node\node_modules\express\lib\router\index.js:335:12) at next (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) at Layer.handle [as handle_request] (c:\wamp\www\node\node_modules\express\lib\router\layer.js:95:5)
According to the API reference , the first param always contain request req
, then response res
.
So change first param res
to req
:
app.get('/', function(req, res) {
res.send("Rendering file")
}
It should fix it.
You've got the res
and req
parameters the wrong way around.
app.get('/', function(res, req)
should be
app.get('/', function(req, res)
Source: API docs .
交换 req & res : function(req, res)
Everything fine. Good Work. Just make a little change in parameters eg (req, res) instead of (res, req). Its a Rule.
you should use req argument first and res as the second argument this will work without any issue
app.get('/', function(req, res) { res.send("Rendering file") }
You can change your mind in some cases and could be write like this. note: by default, when you run node server on your local machine. Your host will always be localhost:"your desire port" Thank you!
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}`))
The middleware function you are writing is a callback function and should follow the order of declaring params function(req, res, next)
req
for request res
for response and next
for further operation. You can refer to API reference .
So the proper code would be:
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);
});
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.