Newbie hier versuchen, einen Zugriff auf das Senden von Kontaktformular Daten von Angular 2 zu einem Knoten/Express-Server ... Im Moment hosste ich Angular 2 mit dem eingebauten Server bei localhost: 4200 und der Express-Server bei localhost: 3000. Ich habe versucht, den folgenden Code, aber ich erhalte die folgende Fehlermeldung:POST von Winkel 2 zum Express-Server
Error: ENOENT: no such file or directory, stat 'C:\Users\corey\Desktop\Project\server\api\contact-form-submit'
Hier ist meine Kontakt form.component.ts Datei ist:
import { Component, OnInit } from '@angular/core';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import { HttpClient } from '@angular/common/http';
@Component({
selector: 'app-contact-form',
templateUrl: './contact-form.component.html',
styleUrls: ['./contact-form.component.css']
})
export class ContactFormComponent {
constructor(private http: HttpClient) {}
onSubmit(form) {
this.http.post('http://localhost:3000/server/api/contact-form-submit', JSON.stringify(form.value)).subscribe();
console.log(form.value);
}
}
Hier ist meine server.js Datei:
var express = require('express');
var nodemailer = require('nodemailer');
var mg = require('nodemailer-mailgun-transport');
var bodyParser = require('body-parser');
var app = express();
var path = require('path');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));
//trying to get contact form submission from angular 2 form here
app.get('/', function (req, res) {
res.sendfile('./api/contact-form-submit');
console.log('test');
});
//api key and domain for mailgun
var auth = {
auth: {
api_key: 'api-key-here',
domain: '[email protected] here'
}
}
//trying to send email with nodemailer here
app.post('./api/send', function(req, res) {
var transporter = nodemailer.createTransport(mg(auth));
var mailOptions = {
from: '[email protected]',
to: '[email protected]',
subject: 'Website submission',
text: 'Name: ' + req.body.name + 'Email: ' + req.body.email + 'Message: ' + req.body.message,
html: '<p>Submission: </p><br><ul><li>Name: ' + req.body.name + '</li><li>Email: ' + req.body.email + '</li><li>Message: ' + req.body.message + '</li></ul>'
};
transporter.sendMail(mailOptions, function(error, info) {
if (error) {
console.log(error);
res.redirect('/');
} else {
console.log('Message sent.');
res.redirect('/');
}
})
});
app.listen(3000, function() {
console.log('Express started on port 3000');
});
Ich bekomme erfolgreiche Formulardaten innerhalb Angular 2 zu verwenden, und ich hatte den Express-Server E-Mails mit einem regulären Express-Post/Get mit HTML-Dateien senden ... aber ich verstehe nicht einen wichtigen Teil der Integration von Angular w ie Express und verwenden Sie es, um eine E-Mail mit Nodemailer zu senden. Irgendwelche Hilfe hier? Vielen Dank. This is my project structure.
versuchen Ihre api Route url von 'app.post chaning ('./ api/senden',' zu 'app.post ('/ api/senden', '(ohne den Punkt) – Sgnl
auch der Fehler könnte sein, weil der Server kann nicht die Datei, die Sie wollen, aus dieser Zeile' res.sendfile ('./ api/contact-form-submit'); '. Da es versucht zu lesen von das Dateisystem und vielleicht ist die Datei nicht da, also wirft es den Fehler, dass es keine Datei finden kann. – Sgnl