Javascript Node.js Express.js MongoDB:route.post()需要回调函数,但得到了一个[object Undefined]

Javascript Node.js Express.js MongoDB:route.post()需要回调函数,但得到了一个[object Undefined],javascript,node.js,mongodb,express,Javascript,Node.js,Mongodb,Express,我正在尝试建立一个MEAN(mongodb、express、nodejs、angular6(CLI))应用程序。试图将用户注册表单数据发布到mongo数据库,但抛出了一个错误。这是我第一个尝试学习的应用程序 我错过什么了吗 错误:Route.post()需要回调函数,但得到了一个[object Undefined] server.js 这是server.js文件 var express=require('express'); var bodyParser=require('body-parse

我正在尝试建立一个MEAN(mongodb、express、nodejs、angular6(CLI))应用程序。试图将用户注册表单数据发布到mongo数据库,但抛出了一个错误。这是我第一个尝试学习的应用程序

我错过什么了吗

错误:Route.post()需要回调函数,但得到了一个[object Undefined]

server.js

这是
server.js
文件

var express=require('express');
var bodyParser=require('body-parser');
var path=require('path');
var http=require('http');
var-app=express();
var api=require('./server/routes/api');
use(bodyParser.json());
use(bodyParser.urlencoded({extended:false}));
app.use(express.static(path.join(uu dirname+'/dist/meanshopcart'));
应用程序使用('/api',api);
app.post('/sign-up',api.signup);
app.get('*',函数(req,res){
res.sendFile(path.join(uu dirname,'/dist/meanshopcart/index.html');
});
var port=process.env.port | |“3000”;
应用程序集(“端口”,端口);
var server=http.createServer(app);
//app.listen(端口,函数(){
//log(“服务器正在运行..!!”;
//});
侦听(端口、函数(错误){
如果(错误){
返回console.log('发生了不好的事情',err);
}
log(“服务器正在运行..!!”;

});
尝试更改
/server/routes/api.js

function signup(req, res, next){
console.log("new user entered");

var newUser = new User();
newUser.name = req.body.name;
 newUser.email = req.body.email;
 newUser.password = req.body.password;
 newUser.phoneNo = req.body.phone;
 newUser.address = req.body.address;

newUser.save(function(err){
    if(err){
        console.log("error saving user");
    }
    else{
        console.log("user inserted");
    }
  })
};

module.exports = {router, signup};

它应该完成您正在使用的导出和module.exports的工作。 要么你应该遵循@dimagolovin的答案 或 module.exports={router}

和使用

`应用程序使用('/api',api.router)


app.post('/sign-up',api.signup)`

exports
不是由require()返回的,请使用
module.exports.signup
而不是
/server/routes/api.js中的
exports.signup
,我做了上述更改。现在我又犯了一个错误
Router.use()需要一个中间件函数,但在函数处得到了一个对象。use
您能发布错误吗?@Arif Kahn建议的很好,在上述更改之后,使用
app.use('/api',api.router)
in
server.js