NodeJS 当我试图导入一个函数与我导出的npm模块,我得到“类扩展值未定义不是一个构造函数或空”在sveltekit

yacmzcpb  于 2023-04-05  发布在  Node.js
关注(0)|答案(1)|浏览(120)

我正在尝试使用npm模块使用sveltekit发送表单中包含值的电子邮件:“nodemailer”,但是当我导入函数时,我得到了这个错误:“类扩展值undefined不是构造函数或null”
这是mail.js,函数为:

import nodemailer from "nodemailer"

var transporter = nodemailer.createTransport({
    service: 'gmail',
    auth: {
        user: 'mymail',
        pass: 'mypass'
    }
});

export function sendEmail(text) {
    const mailOptions = {
        from: "from",
        to: "to",
        subject: "test",
        text
    }

    transporter.sendMail(mailOptions)
}

这是我的**+page.svelte**在/contact文件夹中:

<script>
    import Navbar from "../Navbar.svelte";
    import Footer from "../Footer.svelte";

    import {sendEmail} from "./mail.js";

    //sendEmail("message")
</script>

<Navbar/>

<form id="contact-form">
    <textarea id="message" cols="30" rows="10"></textarea>
    <button type="submit">Send</button>
</form>

<Footer/>

奇怪的事情发生了,当我进入页面时,我得到了500个错误的描述,但是当sendEmail()函数被取消注解时,它实际上发送了我的电子邮件。
我想用表单中的值发送我的邮件。

yvfmudvl

yvfmudvl1#

因此,在深入研究Tobi Obeck提供的答案后,我终于得到了正确的答案。我仍然不知道为什么脚本已经执行,但我确实理解为什么每次我试图发布表单时页面都会出现500服务器错误。我将我的代码发送给每个人,这里是我的解决方案:

import nodemailer from "nodemailer"

var transporter = nodemailer.createTransport( {
    service: "gmail",
    auth: {
        user: "mymail",
        pass: "mypass"
    }
})

/** @type {import('./$types').Actions} */
export const actions = {
default: async ({ request }) => {
    const data = await request.formData();

    const email = data.get("email")
    const message = data.get("message")

    const mailOptions = {
        from: email,
        to: "tomail",
        subject: `subject`,
        text: message
    }

    await transporter.sendMail(mailOptions)

    }
}

相关问题