Угловая 7 Форма в производстве - PullRequest
0 голосов
/ 26 февраля 2019

Я пытаюсь ввести в действие форму, которая отправляет мне данные по почте с помощью nodemailer в localhost: 3000, это работает хорошо, но при загрузке моего проекта на сервере с сообществом я не могу заставить этот код работать

приложение в корне проекта, которое называется nodeMensajeria / src / node modules, app.js и configMensaje.js

Мира Ла Раиз де Мой проект app.js

const express = require('express');
const cors = require('cors');
const bodyParser = require('body-parser');
const configMensaje = require('./configMensaje');

const app = express();
app.use(bodyParser.json());
app.use(cors())

app.post('/formulario', (req, res) => {
  configMensaje(req.body);
  res.status(200).send();
})

app.listen(3000, () => {
  console.log('Servidor corriendo')
});

configMensaje.js

const nodemailer = require('nodemailer');

module.exports = (formulario) => {
  var transporter = nodemailer.createTransport({
    service: 'gmail',
    auth: {
      user: 'correoorigen', 
      pass: 'contraseña' 
    }
  });

  const mailOptions = {
    from: `"${formulario.nombre} ?" <${formulario.email}>`,
    to: 'correodestino', // 
    subject: formulario.asunto,
    html: `
    <strong>Nombre:</strong> ${formulario.nombre} <br/>
    <strong>Asunto:</strong> ${formulario.asunto} <br/>
    <strong>E-mail:</strong> ${formulario.email}  <br/>
    <strong>Número de contacto:</strong> ${formulario.contacto}  <br/>
    <strong>Mensaje:</strong> ${formulario.mensaje}
    `
  };

  transporter.sendMail(mailOptions, function (err, info) {
    if (err)
      console.log(err)
    else
      console.log(info);
  });
}

service message.service.ts

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http'

@Injectable({
  providedIn: 'root'
})
export class MessageService {

  constructor(private _http: HttpClient) { }

  sendMessage(body) {
    return this._http.post('http://107.180.59.131:3000/formulario', body);
  }
}

Я использую ip своего домена

app.component.ts

import { Component, OnInit } from '@angular/core';
import { MessageService } from '../services/message.service';

import swal from 'sweetalert';
import { VirtualTimeScheduler } from 'rxjs';

@Component({
  selector: 'app-form',
  templateUrl: './form.component.html',
  styleUrls: ['./form.component.scss']
})
export class FormComponent implements OnInit {



  constructor(public _MessageService: MessageService) { }

  contactForm(form) {
    this._MessageService.sendMessage(form).subscribe(() => {
      swal("Formulario de contacto", "Mensaje enviado correctamente", 'success');

    });

  }



  ngOnInit() {

  }

}

Это показывает, что приложение выполняется

, но при отправке формы в производство оно показывает следующую ошибку

Не удалось загрузить ресурс: net:: ERR_CONNECTION_TIMED_OUT main.5cb5f6b8477568c35bd7.js: 1 ERROR e {headers: t, status: 0, statusText: «Unknown Error», url: «http://107.180.59.131:3000/formulario", ok: false,…}

посмотрите на ошибку

1 Ответ

0 голосов
/ 26 февраля 2019

вам нужно развернуть Express API на вашем сервере, эта ссылка может помочь вам https://developer.mozilla.org/en-US/docs/Learn/Server-side/Express_Nodejs/deployment

вы используете режим разработки для работы на рабочем сервере, а ваш брандмауэр блокирует порт 3000, когдавы развертываете API, вы должны отправить сообщение на http://YOUR_IP/endpoint или http://api.IP/endpoint

...