如何修复axios Next js中的“错误:请求失败,状态代码为404”

时间:2019-06-23 06:45:47

标签: javascript reactjs nginx axios next.js

  

我在尝试调用API端点时正在使用下一个js(调度一个   在getInitialProps中执行redux操作)。我收到404错误,/ api /   在Nginx服务器中代理,所有其他路由都工作得很好   路由导致了问题。

     

我尝试通过将api fetch函数调用更改为async来尝试,但是   还是一样的错误。

static async getInitialProps({ store, query: { id } }) {
    await store.dispatch(fetchP(id));
    console.log('GetIntial');
    return { id };
 }
  

我的动作创建者

export const fetchp = id => async dispatch => {
  dispatch({ type: FETCH_P_DETAILS_STARTED });
  await API.get(`ps/${id}`)
    .then(res => {
      console.log(res);
      dispatch({
        type: FETCH_P_DETAILS_SUCCESS,
        payload: res.data.data,
      });
    })
    .catch(err => {
      console.log(err);
      if (!err.response) {
        // network error
        err.message = 'Error: Network Error';
        console.log(err.message);
      } else if (err.code === 'ECONNABORTED') {
        console.log('Timeout');
      } else {
        err.message = err.message;
      }
      dispatch({
        type: FETCH_P_DETAILS_FAILURE,
        payload: err.message,
      });
    });
};
  

我的nginx配置

  location /api/ {
    proxy_pass http://127.0.0.1:5000;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_set_header Host $host;
    proxy_cache_bypass $http_upgrade;
  }
  

错误响应错误:请求失败,状态码为404       在createError(/home/ubuntu/mainWebApp/node_modules/axios/lib/core/createError.js:16:15)       在解决时(/home/ubuntu/mainWebApp/node_modules/axios/lib/core/settle.js:18:12)       在IncomingMessage.handleStreamEnd(/home/ubuntu/mainWebApp/node_modules/axios/lib/adapters/http.js:202:11)       在IncomingMessage.emit(events.js:198:15)       在endReadableNT(_stream_visible.js:1139:12)       在processTicksAndRejections(internal / process / task_queues.js:81:17)

1 个答案:

答案 0 :(得分:0)

所以问题是getInitialProps在服务器中执行,而axios无法运行服务器,而使用https://www.npmjs.com/package/isomorphic-fetch