简体   繁体   中英

nodejs Route.get() requires callback functions but got a [object String]

I'm starting coding using nodejs with express. So i did this in my file test.js which is into my folder routes :

const express = require('express');

const router = new express.Router();

router.get('/test', (req, res) => {
    res.send(`I'm a test`);
});

module.exports = router;

Then, in my server.js :

const test = require('./server/routes/test');
app.use('/test', test);

In my browser, it tells me Cannot get/test

I don't understand why. Need for help. Thanks

The problems seems to be how you are mounting the router. Looking the the router middleware API it seems you should be doing it like this.

test.js

const express = require('express');
const router = new express.Router();

router.get('/test', (req, res, next) => {
  res.send("I'm a test");
  next();
});

module.exports = router;

server.js

const express = require('express');
const app = express();
const test = require('./test'); 

app.use('/', test);

app.listen(3000);

in order to access /test use router.get('/' and app.use('/test' because express will concatenate / and /test .

in your case you have to access /test/test so do this and enter /test in your borwser:

const express = require('express');

const router = new express.Router();

router.get('/', (req, res) => { res.send("I'm a test"); });

module.exports = router;

Then, in your server.js :

const test = require('./server/routes/test'); app.use('/test', test);

Simple fix that should resolve your issue.

Replace

const router = new express.Router();

With

const router = express.Router();

res.send()添加"I'm a test" ,我的意思是在该String周围添加"

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM