NextJS API 未发布到外部域

时间:2021-03-24 07:37:21

标签: node.js reactjs next.js vercel

我有一个在 Vercel 中运行的简单 NextJS 应用程序。我克隆了 Vercel 提供的 NextJS 模板,只添加了一个名为 jira.js 的文件

当这个 jira 被点击时,我只是想将随机数据发布到外部 API。

Jira.js 如下

    // Next.js API route support: https://nextjs.org/docs/api-routes/introduction
    process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';
    
    import axios from 'axios'
    import https from 'https'
    
    export default (req, res) => {
        const headers = {
            'Content-Type': 'application/json',
            'Access-Control-Allow-Origin': '*'
        }
    
        axios.post('https://webhook.site/6db7a14b-48d7-4037-a482-86885526aa40', {
            Name: 'Fred',
            Age: '23'
        }, {
            headers: headers,
            withCredentials: true
        }
        ).then(function(res) {
            console.log({res: res})
        }).catch(function(e) {
            console.log({"failed": e})
        })
        res.json({ status: 'ok' })
    
    }

当我在本地 (localhost:3000/api/jira) 尝试时,数据会发布到 Webhook 站点,但是当我将其部署到 vercel(random-domain.com/api/jira) 时,不会在 Webhook 站点中发布数据,但我在浏览器中收到 Status: ok 消息。

我对此很陌生? somoene 可以指导我了解我缺少的东西吗?

1 个答案:

答案 0 :(得分:1)

您尚未将您的函数标记为 export default async (req, res) => { try { const response = await fetch( `https://webhook.site/6db7a14b-48d7-4037-a482-86885526aa40`, { body: JSON.stringify({ Name: 'Fred', Age: '23' }), headers: { 'Access-Control-Allow-Origin': '*', 'Content-Type': 'application/json' }, method: 'POST' } ); if (response.status >= 400) { return res.status(400).json({ error: 'There was an error' }); } return res.status(200).json({ status: 'ok' }); } catch (error) { return res.status(500).json({ error: 'There was an error' }); } }; ,因此我认为它不会等待 JIRA 的回复。例如:

axios

您也不需要 fetch - captcha 默认为您填充。