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

拈花ヽ惹草 提交于 2020-11-29 23:47:25

问题


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


回答1:


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);



回答2:


Add "I'm a test" inside res.send(), I mean add " around that String.




回答3:


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);



回答4:


Simple fix that should resolve your issue.

Replace

const router = new express.Router();

With

const router = express.Router();


来源:https://stackoverflow.com/questions/42775212/nodejs-route-get-requires-callback-functions-but-got-a-object-string

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!