仅表达服务静态文件

时间:2018-02-18 00:06:29

标签: javascript reactjs express

我正在使用React和Express构建应用程序,并希望路由主要通过Express而不是react-router。

在我构建react应用程序并将Express设置为从build文件夹提供静态文件之后,每个路径都只会导致React应用程序。例如,当访问localhost:3000 / test时,我仍然只获得React应用而不是“测试”。

const express = require('express');
const path = require('path');
const app = express();

app.use(express.static(path.join(__dirname, './client/build')));

app.get('/', function (req, res) {
  res.sendFile(path.join(__dirname, '/client/build', 'index.html'));
});

app.get('/test', function (req, res) {
   res.send("testing");
});

app.listen(3000);

1 个答案:

答案 0 :(得分:0)

您很可能不希望出现这样的结果,因为您希望将服务器端路由暴露给客户端,并将处理SPA文件的路由作为应用程序内部的最后一个路由。但是这段代码对你有用。

const express = require('express');
const path = require('path');
const fs = require('fs')
const app = express();

app.use(express.static(path.join(__dirname, './client/build')));

app.get('*', function (req, res) {
   const file = fs.createReadStream(path.join(__dirname, '/client/build', 'index.html'));
   return file.pipe(res);
});

app.get('/test', function (req, res) {
   res.send("testing");
});

app.listen(3000);

我希望这会有所帮助,快乐编码!