Почему мое действие в регистрации развернутся при развертывании?Javascript

Форум по Javascript
Ответить
Anonymous
 Почему мое действие в регистрации развернутся при развертывании?

Сообщение Anonymous »

My Register Server работает на локальном хосте, но ломается при развертывании в DigitaloCean. Я пытался запустить его на сервере в режиме разработки, но это не имеет значения. < /P>
Я получаю ошибку тайм -аута, и я понятия не имею, почему.

Код: Выделить всё

Error in registerUser: [Error: Connection timeout] { code: 'ETIMEDOUT', command: 'CONN' }
< /code>
Вот действие сервера: < /p>
"use server";

import { actionClient } from "@/lib/safe-action";
import { registerSchema } from "@/schemas/Register-schema";
import { prisma } from "@/prisma";
import bcrypt from "bcryptjs";
import crypto from "crypto";
import { sendSMS } from "@/lib/sms";
import { sendEmail } from "@/lib/email";

export const registerUser = actionClient
.schema(registerSchema)
.action(
async ({
parsedInput: {
forename,
surname,
email,
mobile,
password,
confirmPassword,
role,
},
}) => {
try {
const emailLower = email.toLowerCase();
if (password !== confirmPassword) {
throw new Error("Passwords do not match.");
}
const existingUser = await prisma.user.findFirst({
where: {
email: emailLower,
},
});

if (existingUser) {
return { error: "User already exists" };
}
const salt = bcrypt.genSaltSync(10);
const pwHash = bcrypt.hashSync(password, salt);
const expires = new Date();
expires.setHours(expires.getHours() + 6);
const token = crypto.randomBytes(32).toString("hex");

await prisma.user.create({
data: {
forename,
surname,
email: emailLower,
mobile,
role,
password: pwHash,
},
});

await prisma.emailToken.create({
data: {
token,
expires,
user: {
connect: {
email: emailLower,
},
},
},
});

const mobileToken = (
Math.floor(Math.random() * (999999 - 100000 + 1)) + 100000
).toString();
const mobileExpires = new Date();
mobileExpires.setHours(mobileExpires.getHours() + 6);

await prisma.mobileToken.create({
data: {
token: mobileToken,
expires: mobileExpires,
user: {
connect: {
mobile,
},
},
},
});
await sendEmail(
email,
"welcome@tutacall.com",
"Verify your email",
`Visit ${process.env.BASE_URL}/verify-email?token=${token} to verify your email address.`,
`[url=${process.env.BASE_URL}/verify-email?token=${token}]Verify your email[/url]`
);

await sendSMS(
mobile,
"Tutacall",
`Your verification code is: ${mobileToken}. Login and use it within 6 hours.`
);

return { success: "Verification Email and SMS sent!" };
} catch (error) {
console.error("Error in registerUser:", error);
return { error: "An error occurred. Please try again." };
}
}
);
< /code>
База данных обновляется, но, похоже, она терпит неудачу при отправке электронной почты, и я понятия не имею, почему. Возможно, переменные в .env.local не загружаются, но NPM автоматически загружает их на мою локальную машину, поэтому должен делать то же самое на сервере, когда я тестирую на сервере, используя NPM.  Я также попытался открыть порт 465, если это также.import nodemailer from "nodemailer";

interface MailData {
from: string;
replyTo: string;
to: string;
subject: string;
text: string;
html: string;
}

export const sendEmail = async (
email: string,
from: string,
subject: string,
text: string,
html: string
) => {
const transporter = nodemailer.createTransport({
host: "smtp.resend.com",
port: 587,
auth: {
user: "resend",
pass: process.env.RESEND_API_KEY,
},
});

await new Promise((resolve, reject) => {
// verify connection configuration
transporter.verify(function (error) {
if (error) {
console.log(error.message);
reject(error);
} else {
console.log("Server is ready to take our messages");
resolve();
}
});
});

const mailData: MailData = {
from: from,
replyTo: from,
to: email,
subject: subject,
text: text,
html: html,
};

await new Promise((resolve, reject) => {
// send mail
transporter.sendMail(
mailData,
(err: Error | null, info: nodemailer.SentMessageInfo) => {
if (err) {
console.error(err);
reject(err);
} else {
console.log(info);
resolve(info);
}
}
);
});
};
Я был бы очень благодарен за помощь с этим.

Подробнее здесь: https://stackoverflow.com/questions/795 ... n-deployed
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»