【问题标题】:use axios in getStaticProps in next js在下一个 js 中的 getStaticProps 中使用 axios
【发布时间】:2026-01-19 14:45:01
【问题描述】:

我有下一个项目。在这个项目中,我使用 axios 发送和接收请求数据。 但是当我在 getStaticProps 函数中使用 axios 时遇到问题,我的 index.js 页面出现错误

这是我的 index.js

 import axios from "axios";

const Home = (props) => {
    console.log(props);
    return <div>d</div>;
};

export async function getStaticProps() {
    const res = await axios.get('https://jsonplaceholder.typicode.com/todos/1');

    return {
        props: {
            data: res
        }
    };
}


export default Home;

这是我浏览器中的 index.js 页面

如果有人可以帮助我,我将非常感激

【问题讨论】:

    标签: javascript reactjs typescript axios next.js


    【解决方案1】:

    这是有效的

     try {
            const result = await axios.get('https://jsonplaceholder.typicode.com/todos/1');
            const data = result.data;
            return {
                props: {
                    data: data
                }
            }
        } catch (error) {
            console.log(error);
        }

    【讨论】:

      【解决方案2】:

      您应该使用res.data。下次,我建议使用console.log(res) 并查看您收到的对象

      【讨论】:

        【解决方案3】:

        在调用返回对象的异步函数时添加JSON.stringify

        尝试像这样修改getStaticProps函数:

        export async function getStaticProps() {
            const res = await axios.get('https://jsonplaceholder.typicode.com/todos/1');
            const stringRes = JSON.stringify(res);
            return {
                props: {
                    data: stringRes
                }
            };
        }
        
        

        使用.text() 将响应数据转换为如下文本:

        export async function getStaticProps() {
            const res = await axios.get('https://jsonplaceholder.typicode.com/todos/1').lean();
           const textRes = await res.text();
            return {
                props: {
                    data: textRes 
                }
            };
        }
        

        【讨论】:

        • 它没有用,关于解决方案2,我收到了这个错误,lean is not a function
        • 错误已更改,新错误是精益不是函数
        • 你试过JSON.stringify(res)吗?
        • 我更新了我的第二种方法,你可以试试吗?
        • 不,但这是有效的 await axios.get('localhost:3001/api/init').data
        【解决方案4】:

        您应该以 json 格式返回响应。我的意思是

        export async function getStaticProps() {
            axios.get('https://jsonplaceholder.typicode.com/todos/1').then(response=> response.json()).then(response=> {
         return {
                props: {
                    data:response.data
                }
            };
        }
        
        }
        
        

        我希望解决方案有效

        【讨论】:

        • 这不起作用。我收到 res.json 不是我浏览器中的功能
        • json 不是函数仍然存在
        • 我解决了这个问题,我会发布我的答案