Javascript $http.post通过angular提供404错误;

Javascript $http.post通过angular提供404错误;,javascript,angularjs,node.js,rest,nodemailer,Javascript,Angularjs,Node.js,Rest,Nodemailer,联系人表单应该发送电子邮件,但console.log显示404错误,尽管数据可见。Node.Js/Express和Angular:但是我使用的是带有Angular的UI路由器……这会导致冲突吗 棱角分明。app.js app.controller("emailForm", ['$scope', '$http', function ($scope, $http) { $scope.user = {test: 1}; $scope.processForm = function(user

联系人表单应该发送电子邮件,但console.log显示404错误,尽管数据可见。Node.Js/Express和Angular:但是我使用的是带有Angular的UI路由器……这会导致冲突吗

棱角分明。app.js

app.controller("emailForm", ['$scope', '$http', function ($scope, $http) {
      $scope.user = {test: 1};

$scope.processForm = function(user) {

    console.log('Im in the controller');
    $http({
      method  : 'POST',
      url     : '/send',
      data    : $scope.user,
      dataType : "json",
      headers : { 'Content-Type': 'application/json' },

    });
}
 }]);
Express app.js:

app.post('/send',function(req,res){
 var transporter = nodemailer.createTransport({
    service: 'gmail',
    auth: {
        user: 'aeoneon@gmail.com',
        pass: '*****'
    }
});

var emailBody = '<div>Name: ' + req.user.name + '</div>' +
'<div>Email: ' + req.user.email + '</div>' +
'<div>Phone: ' + req.user.phone + '</div>' +
'<div>Message: ' + req.user.message + '</div>' +
'<div>Date: ' + (new Date()).toString() + '</div>'; 

var mailOptions = { 
    From: 'aeoneon@gmail.com',
    To: 'will@bluenightphoto.com',
    subject: 'Contact from website',
    html: 'emailBody'
};

console.log(mailOptions);
transporter.sendMail(mailOptions, function (error, info){
  if(error){
            console.log(error);
        }else{
            console.log('Message sent: ' + info.response);
        }
    });
});
});
});
app.post('/send',函数(req,res){
var transporter=nodeEmailer.createTransport({
服务:“gmail”,
认证:{
用户:'aeoneon@gmail.com',
通过:“******”
}
});
var emailBody='Name:'+req.user.Name+''+
'电子邮件:'+req.user.Email+''+
'电话:'+req.user.Phone+''+
'消息:'+req.user.Message+''+
'日期:'+(新日期()).toString()+';
var mailpoptions={
发件人:'aeoneon@gmail.com',
致:'will@bluenightphoto.com',
主题:“网站联系人”,
html:“电子邮件正文”
};
日志(邮件选项);
transporter.sendMail(邮件选项,函数(错误,信息){
如果(错误){
console.log(错误);
}否则{
console.log('发送的消息:'+信息响应);
}
});
});
});
});
表格:


名称:


电子邮件:


电话:


消息:


{{user.phone} 接近 提交
url需要是完整路径:

$scope.processForm = function(user) {

    console.log('Im in the controller');
    $http({
      method  : 'POST',
      url     : 'http://52.11.14.57:9000/send',
      data    : $scope.user,
      dataType : "json",
      headers : { 'Content-Type': 'application/json' },

    });
}
如果您在本地测试,url将是-->
http://localhost:PORT/send

似乎您的“app.post('/send',function(req,res)”函数不接受JSON

如果您发送x-www-form-urlencoded值,它就会工作

$http({
  method  : 'POST',
  url     : '/send',
  data    : 'test=' + $scope.user.test + '&' + 'email=' + $scope.user.email + '&' + 'name=' + $scope.user.name + '&' + 'message=' + $scope.user.message

});
答案很简单

app.set('views', __dirname);
app.set('view engine', 'jade');
如果不设置任何内容,Express不会默认为html5。我删除了其中大部分内容,因为我使用angular来处理所有路由,并且认为我不需要它


如果存储任何相关模板(如电子邮件),请确保至少设置了视图引擎和目录。显然,express不会对您的angular router说太多。

您可以分享您在console中看到的404错误吗。express js正在监听哪个端口?是否没有包含发送的组?添加/发送路由后是否重新启动服务器。您代码中的gmail用户和密码是假的,对吗?;)如果不是,我能建议你尽快更改吗?404是一个非常明显的错误。。路线定义不正确。。您正在运行哪个版本的express,控制台的输出是什么?使用grunt运行任务的express。你会干预吗?已重新启动服务器几次。可能会关机,我应该在几个小时内启用nohup。
app.set('views', __dirname);
app.set('view engine', 'jade');