我创建了一个页面,当用户单击按钮时,该页面会将他重定向到根页面('/')。但是根页面上有一个代码服务器端,当我由Router.push()重定向时不会触发该代码,因此会抛出错误,因为有一个使用节点fs的代码。
所以,我的问题是:那是一种重定向和执行此页面服务器端的方法吗?
注意:必须执行服务器端代码(因为它列出了服务器内部的文件)
代码在github上:
TopWiki /,重定向
html {
height: 100%;
}
body {
height: 100%;
}
index.js,根页面,这是必须在服务器端执行的代码
goTo = (item) => {
console.log('goTo: ', item);
Router.push(`/`);
}
Articles.js(引发错误的FS)
const versions = articles.getVersions(`articles/${query.article}/`);
答案 0 :(得分:0)
对于SSR,只有在客户端浏览器中加载的第一页才会在服务器端呈现。所有其他页面都在客户端本身上路由。
强迫它们在服务器端执行只会增加延迟和服务器负载。相反,您可以做的是确保getInitialProps
中的代码可以同时在服务器端和客户端运行。
由于您已经具有启动并运行ExpressJS的自定义服务器配置,我建议将Articles服务作为路由移动到server.js
中,然后在getInitialProps
中调用该API。
注意:您可以检查req
中res
和getInitialProps
参数的存在,以执行服务器端仅 所需的代码。