我在package.json proxy: 'http://localhost:5000
中的'm running BOTH an express and create-react-app app. They are seperate entities during development and express is just an endpoint which we communicate through ' proxy'字段 . 在 生产环境 过程中,我运行 yarn build
并通过Express中的catch-all-route在build文件夹中提供静态index.html .
// RENDER REACT STATIC INDEX.HTML FROM BUILD
if(process.env.NODE_ENV === 'production') {
app.get('/*', (req, res) => {
res.sendFile(path.join(__dirname, '../client/build', 'index.html'))
})
}
好的, 生产环境 和开发过程中存在巨大差异 . 例如,如果我在 production
期间导航到/ pages / plainhtmlfile,我可以在路由匹配时提供.EJS文件 . 因为在 生产环境 期间只有Express运行,它提供静态文件,包括React构建文件夹index.html .
//THIS WORKS DURING PRODUCTION, NOT WORKING DURING DEVELOPMENT.
app.get('/plainhtmlfile', (req, res) => {
res.render('nonreactpage')
})
如何在可以服务'/ plainthtmlfile'的地方进行开发?现在create-react-app是一个在端口3000上运行的独立进程,在开发期间表示端口5000 .
1 回答
使用webpack-dev-server代理 . 它适用于开发环境,将URL重定向到您指向的服务器 .
例如,您的配置应如下所示,因为快速服务器位于端口5000中
密钥可以包含通配符,因此,这个密钥将重定向以/ api /开头的所有URL
https://webpack.js.org/configuration/dev-server/#devserver-proxy