POST http:// localhost:4200 / contact / send 404(未找到)

死人

我有一个bootstrap用于angular 6应用程序的电子邮件服务表单,并且nodejs我正在nodemailer我的应用程序中使用sendemail,很遗憾表单无法正常工作。提交表单时出现以下错误:

zone.js:2969 POST http://localhost:4200/contact/send 404 (Not Found)

这是HTML表格

 <form [formGroup]="angForm" novalidate method="POST">
    <div class="message">
      <h3> Write to us </h3>
    </div>
    <div class="form__top">
      <div class="form__left">
        <div class="form__group">
          <input class="form__input form__input--name" type="text"   formControlName="name" placeholder="name" #name>
        </div>
        <div *ngIf="angForm.controls['name'].invalid && (angForm.controls['name'].dirty || angForm.controls['name'].touched)" class="alert alert-danger">
          <div *ngIf="angForm.controls['name'].errors.required">
            Name is required.
          </div>
        </div>
        <div class="form__group">
          <input class="form__input form__input--email" type="email"  formControlName="email" placeholder="email" #email>
        </div>
        <div *ngIf="angForm.controls['email'].invalid && (angForm.controls['message'].dirty || angForm.controls['message'].touched)"
          class="alert alert-danger">
          <div *ngIf="angForm.controls['message'].errors.required">
            message is required.
          </div>
        </div>
      </div>
      <div class="form__right">
        <div class="form__group">
          <textarea class="form__input form__input--textarea" placeholder="Message" formControlName="message"  #message
            rows="3"></textarea>
        </div>
        <div *ngIf="angForm.controls['message'].invalid && (angForm.controls['message'].dirty || angForm.controls['message'].touched)"
          class="alert alert-danger">
          <div *ngIf="angForm.controls['message'].errors.required">
            message is required.
          </div>
        </div>
      </div>
    </div>
    <flash-messages></flash-messages>
    <div class="form__down">
      <div class="form__group">
        <button (click)="sendMail(name.value, email.value, message.value)" [disabled]="angForm.pristine || angForm.invalid"  class="form__input form__input--submit" name="submit" type="submit" value="SEND MESSAGE">SEND MESSAGE
        </button>
      </div>
    </div>

  </form>

这是component.ts

import { Component, OnInit } from '@angular/core';
import { ContactService } from '../../contact.service';
import { FormGroup, FormBuilder, Validators } from '@angular/forms';
import { FlashMessagesModule, FlashMessagesService } from 'angular2-flash-messages';
@Component({
  selector: 'app-footer',
  templateUrl: './footer.component.html',
  styleUrls: ['./footer.component.scss']
})
export class FooterComponent implements OnInit {
  angForm: FormGroup;
  constructor(
    private flashMessages: FlashMessagesService,
    private fb: FormBuilder,
    private contactService: ContactService) {
    this.createForm();
  }

  createForm() {
    this.angForm = this.fb.group({
      name: ['', Validators.required],
      email: ['', Validators.required],
      message: ['', Validators.required],
    });
  }
  sendMail(name, email, message) {
    this.contactService.sendEmail(name, email, message).subscribe(success => {
      this.flashMessages.show('You are data we succesfully submitted', { cssClass: 'alert-success', timeout: 3000 });
      console.log(success);
    }, error => {
      this.flashMessages.show('Something went wrong', { cssClass: 'alert-danger', timeout: 3000 });
    });
  }
  ngOnInit() {
  }

}

这是service.ts

import { Injectable } from '@angular/core';
import { Headers, Http, Response } from '@angular/http';
import { Jsonp } from '@angular/http';
import { HttpClient, HttpHeaders, HttpErrorResponse } from '@angular/common/http';
import { Observable } from '../../node_modules/rxjs';

const httpOptions = {
  headers: new HttpHeaders({ 'Content-Type': 'application/json' })
};
const apiUrl = 'http://localhost:4200/contact';

@Injectable({
  providedIn: 'root'
})
export class ContactService {
  sendEmailUrl = '/send';
  constructor(private http: Http) { }

  sendEmail(name, email, message): Observable<any> {
    const uri = `${apiUrl + this.sendEmailUrl}`;
    const obj = {
      name: name,
      email: email,
      message: message,
    };
    return this.http.post(uri, obj);
  }
}

这是服务器.js

// server.js
const express = require('express');
const bodyParser = require('body-parser');
const cors = require('cors');
const path = require('path');
const app = express();
// CORS Middleware
app.use(cors());
// Port Number
const port = process.env.PORT || 3000
// Run the app by serving the static files
// in the dist directory
app.use(express.static(path.join(__dirname, '/majeni/dist/majeni')));
// Body Parser Middleware
app.use(bodyParser.urlencoded({
  extended: false
}));
app.use(bodyParser.json());
//routes
const contact = require('./app/routes/contact');
app.use('/contact', contact);

app.use(function (req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
  next();
});
// For all GET requests, send back index.html
// so that PathLocationStrategy can be used
app.get('/*', function (req, res, next) {
  res.sendFile(path.join(__dirname + '/majeni/dist/majeni/index.html'));
});

// Start Server
app.listen(port, () => {
  console.log('Server started on port ' + port);
});

这是contact.js(路由设置)

const express = require('express');
const router = express.Router();
const request = require('request');
const nodemailer = require('nodemailer');

router.post('/send', (req, res) => {
    const outputData = `
    <p>You have a new contact request</p>
    <h3>Contact Details</h3>
    <ul>  
      <li>Name: ${req.body.name}</li>
      <li>Email: ${req.body.email}</li>
    </ul>
    <h3>Message</h3>
    <p>${req.body.message}</p>
  `;

    let transporter = nodemailer.createTransport({
        host: 'smtp.gmail.com',
        port: 465,
        secure: false,
        port: 25,
        auth: {
            user: 'Myemail',
            pass: 'my pass'
        },
        tls: {
            rejectUnauthorized: false
        }
    });

    let HelperOptions = {
        from: '"Jini" <myEmail',
        to: 'myEmail',
        subject: 'Majeni Contact Request',
        text: 'Hello',
        html: outputData
    };



    transporter.sendMail(HelperOptions, (error, info) => {
        if (error) {
            return console.log(error);
        }
        console.log("The message was sent!");
        console.log(info);
    });

});
module.exports = router;

我的代码中缺少什么?

阿尤布

服务器的端口为3000

const port = process.env.PORT || 3000

所以你必须改变这个:

const apiUrl = 'http://localhost:4200/contact';

const apiUrl = 'http://localhost:3000/contact';

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Angular 8:POST http:// localhost:4200 / assets / data / students.json 404(未找到)

POST http:// localhost:3000/404(未找到)

GET http:// localhost:4200 / resource 404(未找到)

POST http://localhost:55703/ValidStep1 404(未找到)

Angular2和节点js中的POST http:// localhost:4200 / addTask 404(未找到),但值已在控制台中打印

使用 Pug 表达:GET http://localhost:3004/contact 404(未找到)

(404未找到)正在加载http:// localhost:4200 / angular2-datatable / datatable

在 Angular 中获取 http://localhost:4200/[object%20Blob] 404(未找到)

使用angular-cli在angular2中获取http:// localhost:4200 / null 404(未找到)

GET http://localhost:4200/src/app/ficheros/nacionalidades.json 404(未找到)

“http://localhost:49540/api/create/ 的 HTTP 失败响应:404 未找到”Angular 11 POST 请求

GET http:// localhost:3000/404(未找到),实际上是在拨打POST却获得GET

http:// localhost / undefined 404(未找到)

GET http:// localhost:4200 / node_modules / zone.js / dist / zone.js 404(未找到)

GET http://localhost:3000/:/localhost:4000 404(未找到)

GET http://localhost:5000/auth/me 404(未找到)

GET http://localhost:5000/error 404 (未找到)

PUT http://localhost:3000/events/undefined 404(未找到)

GET http://localhost:3000/hello 404(未找到)

未找到 Http 404

GET http:// localhost:3000 / components / t.mp3 net :: ERR_ABORTED 404(未找到)

<未定义:1 GET http:// localhost:63342 / Twitchtv /未定义404(未找到)>

XHR错误(404未找到)正在加载http:// localhost:3000 / traceur

在angular4中获取http:// localhost:3000 / node_modules / rxjs / 404(未找到)

ionic3 GET http:// localhost:8100 / null 404(未找到)

Angular 2 + angular-in-memory-web-api区域GET http:// localhost:3000 / traceur 404(未找到)

离子2 GET http:// localhost:8100 / search / aq?query = 404(未找到)

我收到错误 GET http://localhost:3000/api/products 404(未找到)

识别:9 GET http://localhost:3000/script.js net::ERR_ABORTED 404(未找到)