簡體   English   中英

Axios 未發布到 Heroku 上的 Node.js 應用程序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM