[英]Axios not posting to Node.js app on Heroku
我正在處理我的靜態網站的聯系頁面,通常,它會通過 Heroku 上的 Node.js 應用程序向我發送一封電子郵件並向我發送電子郵件。 但是,Axios 沒有發布電子郵件,因為我沒有在 Heroku 的控制台日志中看到它。
現在,我有一個域名mydomainname.com鏈接到我在 Firebase 上的靜態網站,而api.mydomainname.com鏈接到我的 Heroku 應用程序。
我在'/api/email'
、 'api.mydomainname.com/api/email'
和'mydomainname.com/api/email'
之間更改了 Axios.post,但似乎都不起作用。 我認為因為我的 Heroku 應用程序和靜態網站鏈接到同一個域名,所以它會起作用。
我會將 Axios.post 配置為什么?
這是我目前所擁有的:
聯系頁面.js
handleSubmit = (e) => {
e.preventDefault();
if (this.validate()) {
this.setState({
disabled: true,
emailSent: null
});
Axios.post('api.mydomainname.com/api/email', this.state)
.then(res => {
if(res.data.success) {
this.setState({
emailSent: true
});
this.clearForm();
} else {
this.setState({
disabled: false,
emailSent: false
});
}
})
.catch(err => {
console.log(err);
this.setState({
disabled: false,
emailSent: false
});
})
}
}
索引.js
const express = require('express'); //Needed to launch server.
const bodyParser = require('body-parser');
const cors = require('cors'); //Needed to disable sendgrid security.
const sendGrid = require('@sendgrid/mail'); //Access SendGrid library to send emails.
sendGrid.setApiKey(process.env.SENDGRID_API_KEY);
const app = express(); //Alias from the express function.
app.use(bodyParser.json());
app.use(cors());
app.use((req, res, next) => {
res.setHeader('Access-Control-Allow-Origin', '*'); // Change later to only allow our server
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, PATCH, DELETE');
res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization');
next();
});
app.get('/api', (req, res, next) => {
res.send('API Status: Running');
});
app.post('/api/email', (req, res, next) => {
console.log(req.body);
const msg = {
to: 'my@email.com',
from: req.body.email,
subject: req.body.subject,
text: req.body.message
}
sendGrid.send(msg)
.then(result => {
res.status(200).json({
success: true
});
})
.catch(err => {
console.log('error: ', err);
res.status(401).json({
success: false
});
});
});
app.listen(process.env.PORT || 4000);
這是我的靜態網站的控制台。
我最終發現與 api.mydomainname.com 的連接不安全,需要 SSL 證書。 因此,我將我的域名注冊到 Cloudflare。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.