如何在同一服务器上使用节点js重定向以响应js应用程序?

时间:2018-07-22 16:29:48

标签: node.js reactjs express

我有两个不同的react js Application,我想根据URL将用户重定向到该应用程序

示例:

app.get('/' , (req,res,next) => {
  // redirect to first SPA
});

app.get('/admin' , (req,res,next) => {
  // redirect to another SPA
});

3 个答案:

答案 0 :(得分:0)

我在server.js中添加了此代码,但在这种情况下,我的react应用程序显示空白页。

app.get('/' , (req,res, next) => { 

    res.sendFile(path.join( 'C:/Users/Messkan/Desktop/project-volunteer/volunteers-react/public/index.html'));

})

答案 1 :(得分:0)

如果要从node.js服务器提供react应用,只需发送每个应用的index.html

app.get('/admin', (req, res) => {
  res.sendFile('admin_app/index.html');
});

app.get('/', (req, res) => {
  res.sendFile('public_app/index.html');
});

如果这些文件是从同一台计算机上的不同进程提供的,则必须代理请求:

const httpProxy = require('http-proxy');
const proxy = httpProxy.createServer({});

app.get('/admin', (req, res) => {
  proxy.web(req, res, { target: 'http://localhost:3006/admin' });
});

app.get('/', (req, res) => {
  proxy.web(req, res, { target: 'http://localhost:3006/' });
});
只要在127.0.0.1:3006处的进程侦听所有公共地址,重定向也将起作用。但是重定向包括用户浏览器导航到其他URL。例如。如果您的node.js服务器运行在example.com(即浏览器忽略的端口80)上并重定向到另一个进程,则浏览器现在将显示example.com:3006。通过代理请求,URL将保留在example.com上。

答案 2 :(得分:0)

在路由中间件res.redirect('http://someOtherServer/中呢?

例如res.redirect('http://localhost:5000')

也许其他答案会帮助Nodejs - Redirect url