Next.JS:无法在getInitialProps中调用内部API。得到错误:读取ECONNRESET

时间:2018-08-22 17:15:02

标签: javascript reactjs express next.js

当我在getInitialProps中使用内部API路由时,会出现此错误。

Error: read ECONNRESET
    at _errnoException (util.js:1003:13)
    at TCP.onread (net.js:620:25)

static async getInitialProps({ reduxStore }) {
    const res = await Axios.get("/api/recent/1");
    await reduxStore.dispatch({ type: LIST, payload: res.data });
    return { }
}

但是如果我使用外部API服务器,它就可以正常工作。

static async getInitialProps({ reduxStore }) {
    const res = await Axios.get("http://abc.herokuapp.com/api/recent/1");
    await reduxStore.dispatch({ type: LIST, payload: res.data });
    return { }
}

如果我在componentDidMount中调用API,则在两种情况下都可以正常工作,但是在getinitialProps中,我无法处理Express服务器上的内部API。

请帮助!我的代码有问题吗?我过去两个小时一直在搜索,但无法解决。

1 个答案:

答案 0 :(得分:0)

您可以从请求中提取baseUrl

async getInitialProps({ req }) {
    const protocol = req.headers['x-forwarded-proto'] || 'http'
    const baseUrl = req ? `${protocol}://${req.headers.host}` : ''

    const res = await fetch(baseUrl + '/api/recent/1')
    ...
}