我是Nuxt.js和Node.js的新手。我想在'contact.vue‘页面上运行一个非常简单的联系人表单。它在本地运行的很好,但一旦我做了一个'npm运行生成‘来生成文件并将所有这些上传到FTP,它就不再工作了。控制台中有一个错误:"POST http://website.com/api/message 404 (未找到)“
我在表单上使用POST方法,并使用指向'api / message‘的操作。我在一个方法中使用axios (在同一个'contact.vue‘页面上):
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’和代码:
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中:
/*
** Nuxt.js modules
*/
modules: [
'@nuxtjs/pwa',
'@nuxtjs/axios'
],
/*
** Axios cfg
*/
axios: {
baseURL: '/'
},
/*
** Server middleware
*/
serverMiddleware: ['~/api/index.js'],
我很抱歉,如果对你们中的一些人来说,这个问题看起来很明显,但我完全被困住了。
如果您能抽出时间来帮助我,请提前感谢您。
发布于 2020-11-20 15:50:56
实际上,当您运行npm run generate
时,网站变得完全静态,节点不再在后台运行。这就是为什么您的代码将与npm run dev
或npm run start
一起工作,因为它们同时运行节点。
我也面临着同样的问题。静态网站无法从客户端发送邮件。必须在服务器端发送。要使代码工作正常,要么使用node.js服务器,要么使用无服务器函数解决方案(,如拉姆达或Netlify函数 )来执行邮件发件人函数,要么使用像福姆斯普里或99入这样的外部REST服务。
见https://stackoverflow.com/a/53560851/2610770。
我希望我能帮你一点!
https://stackoverflow.com/questions/64005607
复制