Express js сервер для отправки электронной почты со страницы контактов с использованием хостинга Firebase работает локально, но не по URL-адресу при Firebase-deploy - PullRequest
0 голосов
/ 16 февраля 2020

Я создал внутренний сервер, используя express, и развернул его в firebase. что позволяет мне получать электронные письма со своей страницы контактов в моем портфолио.

Я могу получать электронные письма, когда я запускаю клиентский и внутренний сервер локально. Но когда я выполняю развертывание в firebase и пытаюсь использовать URL-адрес приложения firebase, это не работает. Затем я попытался разместить свое приложение в Github и попробовал страницу контактов, чтобы запрос был со страницы SSL (https). Но все равно я получаю ошибку 500. Я попробовал упомянутое решение и не работал send-email-via- node-js -using-nodemailer-is-not-working

My express js коды

индекс. js

const express = require("express");
const functions = require("firebase-functions");

const path = require("path");
const sendMail = require("./mail");
const log = console.log;
var cors = require("cors");
const app = express();

app.use(cors({ origin: true }));

// data parsing
app.use(express.urlencoded({ extended: false }));
app.use(express.json());

app.post("/email", (req, res) => {
  // expect to receive some data from client
  const { name, email, message } = req.body;
  log("Data", req.body);
  sendMail(email, name, message, function(err, data) {
    if (err) {
      res.status(500).json({ message: "Internal Error" });
    } else {
      res.json({ message: "success", data });
    }
  });
  //email, name, text
});
app.get("/", (req, res) => {
  res.sendFile(path.join(__dirname, "../views", "index.html"));
});

exports.app = functions.https.onRequest(app);

почта. js

const mailGun = require("nodemailer-mailgun-transport");

const auth = {
  auth: {
    api_key: "xxxxxxxxx",
    domain: "xxxxxxxxx"
  }
};

const transporter = nodemailer.createTransport(mailGun(auth));
const sendMail = (email, name, message, callBack) => {
  const mailOptions = {
    from: email,
    to: "faizhameedv@gmail.com",
    subject: `your website mail from ${name}`,
    text: message
  };

  transporter.sendMail(mailOptions, function(err, data) {
    if (err) {
      console.log("err", err);
      callBack(err, null);
    } else {
      callBack(null, data);
      console.log("Message Sent!!");
    }
  });
};

module.exports = sendMail;

Это работает, когда я запускаю локально, используя firebase serve --only functions,hosting, а затем, когда я развертываю его в firebase, что успешно. Но я не могу запросить новый URL, заданный firebase с /email

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...