Потеря строки запроса путем обновления страницы в Next js с использованием express - PullRequest
1 голос
/ 11 марта 2020

У меня проблема со следующим js, и ни одно из решений не помогло мне !!! Я пытаюсь иметь динамический c маршрут в моем проекте SSR, все работает хорошо в localhost, но когда я пытаюсь загрузить его на сервер, или моя проблема IIS показывает: Проблема в том, что все работает нормально первый рендер с сервера и после обновления страницы я теряю строку запроса и происходит неопределенная ошибка. Вот мои коды:

Сервер. js:

const express = require("express");
const next = require("next");
const port = process.env.PORT || 3003;

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

app.prepare().then(() => {
  const server = express();

  server.get("/", (req, res) => {
    return app.render(req, res, "/index");
  });

  server.get("/test?org&des&roomRules&departing&returning", (req, res) => {
    return app.render(req, res, "/test" , {
      org: req.query.org ,
      des: req.query.des,
      roomRules:req.query.roomRules,
      departing: req.query.departing,
      returning: req.query.returning,
    });
  });

  server.get("*", (req, res) => {
    return handle(req, res);
  });
  server.listen(port, err => {
    if (err) throw err;
    console.log(`READY ON  http://localhost:${port}`);
  });
});

Родительский компонент:

const RoundButton = props => {
  const { searchParams , name} = props;
  const URL2 = `/test?org=${searchParams.org}&des=${searchParams.des}&roomRules=${searchParams.roomRules}&departing=${searchParams.orgDate}&returning=${searchParams.desDate}`;
  return (
    <Link  href={URL2} as={URL2}>
      Test
    </Link>
  );
};

Test Comp onet:

function Test(props) {
  return (
    <div>
      <h1>Test</h1>
      <h2>roomrules :{props.queryStrings}</h2>
    </div>
  )
}

Test.getInitialProps =  ({query}) => {
  const queryStrings =  query;
  return {
     queryStrings: queryStrings 
  };    
};

export default Test

Как видите, я использовал getInitialProps, и он работает только при первом рендеринге.

И, наконец, мои скрипты в пакете. json:

"scripts": {
  "dev": "node server.js",
  "build": "next build && next export",
  "start": " node server.js"
},

Для публикации sh I напишите "npm запустить сборку" в cmd. Любое решение?

...