当我使用React时,我所要做的就是运行npm build,将内容复制到Node中一个名为public
的文件夹中,然后我添加以下行,它就可以工作了:
node/app.js
app.use(express.static(path.join(__dirname, 'public')));
//...routes
app.use((req, res, next) => {
res.sendFile(path.resolve(__dirname, 'public', 'index.html'))
})
一切正常,所有链接的内容都显示出来了,这很好。
但是,在NextJS中运行npm run build
会在.../server/pages
中生成index.html文件。
所以我这样做:
app.use(express.static(path.join(__dirname, 'public')));
//... routes
app.use((req, res, next) => {
res.sendFile(path.resolve(__dirname, 'public', 'server', 'pages', 'index.html'))
})
运行节点应用程序确实会显示index.htm
文件内容,但单击其中的任何链接都将重定向到index.html页面,即使显示的url发生了变化。
救命啊!
1条答案
按热度按时间uxh89sit1#
要将其用作React应用程序,您需要使用Static HTML Export,它将通过运行
next build && next export
生成一个类似React的构建文件夹。一个月一个月一个月一个月,一个月一个月二个月一个月,一个月三个月一个月,一个月四个月,一个月五个月,一个月六个月。这是因为Next.js被设计成一个Node.js/React“全栈”框架,因此推荐的方法是将其作为一个独立的应用程序与
npm run build && next start
一起使用。