У меня проблема со следующим 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. Любое решение?