Почему запрос из getInitialProps пуст? - PullRequest
0 голосов
/ 14 октября 2019

Я хочу получить некоторые данные, используя параметры запроса на сервере для страницы.

Однако мой запрос пуст в getInitialProps при визуализации через сервер. Почему это может происходить?

Более того, я заметил, что это происходит только на рабочем сервере, а не в dev или prod env на моем локальном компьютере.

Вот некоторый код

import React from 'react';

import Config from 'component/Config';

import { withAuthSync } from 'util/auth';
import apiUrl from 'util/apiUrl';

function ResourceConfigPage({ data }) {
  return <Config data={data} />;
}

ResourceConfigPage.getInitialProps = async ctx => {
  const { resourceId } = ctx.query;
  try {
    const response = await fetch(`${apiUrl}/resource/config?resourceId=${resourceId}`, {
      method: 'GET',
      headers: {
        'Content-Type': 'application/json',
      }
    });
    if (response.ok) {
      const data = await response.json();
      return { data };
    }
  }
  return {};
};

export default withAuthSync(ResourceConfigPage);

Мое следующее приложение использует пользовательский экспресс-сервер, и вот как оно выглядит.

const express = require('express');
const next = require('next');
const compression = require('compression');

const dev = process.env.NODE_ENV !== 'production';
const app = next({ dev });
const handle = app.getRequestHandler();

app
  .prepare()
  .then(() => {
    const server = express();
    app.setAssetPrefix(dev ? '' : 'https://example.com');
    server.use(compression());

    server.get('/healthcheck', (req, res) => {
      res.status(200).json({});
    });
    server.get('/', (req, res) => {
      if (req.cookies.sessionId) {
        res.redirect('/dashboard');
      }
      res.redirect('/login');
    });

    server.get('*', (req, res) => {
      return handle(req, res);
    });
    server.listen(3000, err => {
      if (err) throw err;
      console.log('> Ready on http://localhost:3000');
    });
  })
  .catch(ex => {
    console.error(ex.stack);
    process.exit(1);
  });
...