首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >带有nodemailer问题的Nuxt.js和Node.js简单形式:(

带有nodemailer问题的Nuxt.js和Node.js简单形式:(
EN

Stack Overflow用户
提问于 2020-09-22 08:13:24
回答 1查看 1.4K关注 0票数 2

我是Nuxt.js和Node.js的新手。我想在'contact.vue‘页面上运行一个非常简单的联系人表单。它在本地运行的很好,但一旦我做了一个'npm运行生成‘来生成文件并将所有这些上传到FTP,它就不再工作了。控制台中有一个错误:"POST http://website.com/api/message 404 (未找到)“

我在表单上使用POST方法,并使用指向'api / message‘的操作。我在一个方法中使用axios (在同一个'contact.vue‘页面上):

代码语言:javascript
代码运行次数:0
运行
复制
async onSubmit (e) {
  e.preventDefault()
  await this.$axios.post('/api/message', {
    name: this.contactForm.name,
    firstname: this.contactForm.firstname,
  })
    .then((res) => {
      // On clear le formulaire
      this.contactForm.name = ''
      this.contactForm.firstname = ''
    })
    .catch((err) => {
      console.log(err)
    })
}

我在根文件夹中有一个'api/‘文件夹,里面有'index.js’和代码:

代码语言:javascript
代码运行次数:0
运行
复制
const app = require('express')()
const bodyParser = require('body-parser')
const nodemailer = require('nodemailer')

module.exports = { path: '/api', handler: app }

app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json())

app.post('/message', async (req, res) => {
 const contenuFormulaireContact = `
   <ul>
     <li>Nom : ${req.body.name}</li>
     <li>Prénom : ${req.body.firstname}</li>
   </ul>
 `
 // NODEMAILER
 const transporter = nodemailer.createTransport({
   host: '',
   port: 465,
   secure: true,
   auth: {
     user: '',
     pass: ''
   }
 })

 const info = await transporter.sendMail({
   from: '"Website's Name" <hello@website.com>', // sender address
   to: 'myemail@website.com', // list of receivers
   subject: `NEW MESSAGE : ${req.body.subject}`, // Subject line
   text: '', // plain text body
   html: contenuFormulaireContact // html body
 })

 console.log('Message sent: %s', info.messageId)
 console.log('Preview URL: %s', nodemailer.getTestMessageUrl(info))

 res.redirect(200, '/contact')
 })

在我的nuxt.config.js中:

代码语言:javascript
代码运行次数:0
运行
复制
/*
** Nuxt.js modules
*/
modules: [
  '@nuxtjs/pwa',
  '@nuxtjs/axios'
],
/*
** Axios cfg
*/
axios: {
  baseURL: '/'
},
/*
** Server middleware
*/
serverMiddleware: ['~/api/index.js'],

我很抱歉,如果对你们中的一些人来说,这个问题看起来很明显,但我完全被困住了。

如果您能抽出时间来帮助我,请提前感谢您。

EN

回答 1

Stack Overflow用户

发布于 2020-11-20 23:50:56

实际上,当您运行npm run generate时,网站变得完全静态,节点不再在后台运行。这就是为什么您的代码将与npm run devnpm run start一起工作,因为它们同时运行节点。

我也面临着同样的问题。静态网站无法从客户端发送邮件。必须在服务器端发送。要使代码工作正常,要么使用node.js服务器,要么使用无服务器函数解决方案(,如拉姆达Netlify函数 )来执行邮件发件人函数,要么使用像福姆斯普里99入这样的外部REST服务。

https://stackoverflow.com/a/53560851/2610770

我希望我能帮你一点!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64005607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档