Node.js http POST未到达后端

Node.js http POST未到达后端,node.js,angular,Node.js,Angular,我试图将电子邮件值传递到后端,但它从未到达端点。我有相同的url路径被调用,但是console.log(“您已经到达后端”)从不输出。为什么呢?它肯定击中了angular服务,因为它输出到控制台没有问题 角度服务 import { Injectable } from "@angular/core"; import { HttpClient, HttpParams } from "@angular/common/http"; import { Router } from "@angular/rou

我试图将电子邮件值传递到后端,但它从未到达端点。我有相同的url路径被调用,但是
console.log(“您已经到达后端”)从不输出。为什么呢?它肯定击中了angular服务,因为它输出到控制台没有问题

角度服务

import { Injectable } from "@angular/core";
import { HttpClient, HttpParams } from "@angular/common/http";
import { Router } from "@angular/router";
import { PasswordReset } from "./password.model";

@Injectable({ providedIn: "root" })
export class PasswordResetService {
  constructor(private http: HttpClient, private router: Router) {}

  sendEmail(email: string) {
    const password: PasswordReset = {
      email: email
    };
    console.log("Made It");
    return this.http.post(
      `http://localhost:3000/api/users/passwordreset`,
      password
    );
  }
}
app.js

app.post("/api/users/passwordreset", function(req, res) {

console.log("You've made it to the backend");
let emailValue = req.body.email;

  if (req.body.email !== undefined) {
    User.findOne({ email: req.body.email })
    .then(user => {
      if(user){
        console.log("fetchedUser");
        console.log(user._id);
        var payload = {
          id: user._id,
          email: user.email
        };

         var secret = user.password + "-" + user.passwordCreated;
         console.log("THE SECRET IS: " + secret);
         var token = jwt.sign(payload, secret);
         console.log("payload");
         console.log(payload);

         var ses_mail = "From: 'Auction Site' <" + emailValue+ ">\n";
         ses_mail = ses_mail + "To: " +emailValue + "\n";
         ses_mail = ses_mail + "Subject: Password Reset Request\n";
         ses_mail = ses_mail + "MIME-Version: 1.0\n";
         ses_mail = ses_mail + "Content-Type: multipart/mixed; boundary=\"NextPart\"\n\n";
         ses_mail = ses_mail + "--NextPart\n";
         ses_mail = ses_mail + "Content-Type: text/html; charset=us-ascii\n\n";
         ses_mail = ses_mail + '<a href="http://localhost:3000/resetpassword/' + payload.id + '/' + token + '">Click here to reset password</a>';
       //  /:id/:token

         var params = {
           RawMessage: { Data: new Buffer.from(ses_mail) },
           Destinations: [emailValue ],
           Source: "'AWS Tutorial Series' <" + emailValue + ">'"

       };

         ses.sendRawEmail(params, function(err, data) {
          if(err) {

              res.send(err);
              console.log(err);
          }
          else {
              res.send(data);
          }
      })

    }
      if (!user) {
        return res.status(401).json({
          message: "Auth failed"
        });
      }


    });


  } else {
    res.send("Email address is missing.");
  }
});
app.post(“/api/users/passwordreset”,函数(req,res){
log(“您已经到达后端”);
让emailValue=req.body.email;
如果(req.body.email!==未定义){
User.findOne({email:req.body.email})
。然后(用户=>{
如果(用户){
console.log(“fetchedUser”);
console.log(用户id);
var有效载荷={
id:user.\u id,
电子邮件:user.email
};
var secret=user.password+“-”+user.passwordCreated;
console.log(“秘密是:“+SECRET”);
var-token=jwt.sign(有效负载,秘密);
控制台日志(“有效载荷”);
控制台日志(有效载荷);
var ses_mail=“From:‘拍卖网站’\n”;
ses_mail=ses_mail+“收件人:”+emailValue+“\n”;
ses_mail=ses_mail+“主题:密码重置请求\n”;
ses_mail=ses_mail+“MIME版本:1.0\n”;
ses\U mail=ses\U mail+“内容类型:多部分/混合;边界=\“下一部分\”\n\n”;
ses_mail=ses_mail+“--NextPart\n”;
ses_mail=ses_mail+“内容类型:text/html;字符集=us ascii\n\n”;
ses_mail=ses_mail+“”;
///:id/:令牌
变量参数={
RawMessage:{Data:new Buffer.from(ses_-mail)},
目的地:[emailValue],
资料来源:“AWS教程系列”
};
ses.sendRawEmail(参数、函数(错误、数据){
如果(错误){
res.send(err);
控制台日志(err);
}
否则{
res.send(数据);
}
})
}
如果(!用户){
返回res.status(401).json({
消息:“身份验证失败”
});
}
});
}否则{
res.send(“电子邮件地址丢失”);
}
});

我猜您没有订阅http请求

请尝试此测试:

 this.http.post(
  `http://localhost:3000/api/users/passwordreset`,
  password
).subscribe(r=>console.log(r));
return null;

控制台上的任何错误。我认为您应该在控制台中得到一个CORS错误。OP可能已经订阅了
他们调用服务方法的位置,这是肯定的。控制台正在输出。我会在几分钟内接受你的回答,等它允许我的时候。谢谢