简体   繁体   中英

My Node.js gets an Route.post() got a object Undefined error

I did a simple modularization through Node.js.

And I tried to do an api test through Postman, but my nodemon says that the following error occurred.

error

Error: Route.post() requires a callback function but got a [object Undefined]
    at Route.

routes/router.js

const express = require('express');
const route = express.Router();
const user = require('../controller/user');

route.route('/user')
    .post(user.createUser)
    .get(user.readUser)
    .put(user.updateUser)
    .delete(user.deleteUser)

module.exports = route;

controller/user.js

exports.createUser = function (req, res) {
    res.send('user create.')
}

exports.readUser = function (req, res) {
    res.send('user read.')
}

exports.updateUser = function (req, res) {
    res.send('user update.')
}

exports.deleteUser = function (req, res) {
    res.send('user delete.')
}

server.js

const express = require('express');
const app = express();
const port = process.env.PORT || 3000;
const router = require('./routes/router');

app.use(router);

app.listen(port, err => {
    if(err) console.log(err)
    else console.log('server on');
});

What's wrong with me?

I would suggest transforming your current code ( controller/user.js ) to:

module.exports = {

createUser: function(req, res){
    res.send('User created')
},
readUser: function (req, res) {
    res.send('Viewing user.')
},
updateUser: function (req, res) {
    res.send('User updated.')
},
deleteUser: function (req, res) {
    res.send('User deleted.')
}}

I had a similar issue not too long ago and this solved the problem for me. So before you downvote my answer, at least consider doing so yourself. :) I truly hope it helps.

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