Javascript 服务器端渲染(Express/React),提供未定义路由的文件
从我所读到的一切来看,我的经历听起来很奇怪。但当我想传入值时,似乎Javascript 服务器端渲染(Express/React),提供未定义路由的文件,javascript,reactjs,server-side-rendering,static-files,Javascript,Reactjs,Server Side Rendering,Static Files,从我所读到的一切来看,我的经历听起来很奇怪。但当我想传入值时,似乎express.static正在根目录下提供文件 为了说明这一点,我有一个: React应用程序,我使用创建脚本为生产构建 Express应用程序,在与上述相同的回购协议中,应提供文件 “我的存储库”的布局使文件夹结构如下所示: /build (React js files after building src) /dist (Express js files after building server) /server (E
express.static
正在根目录下提供文件
为了说明这一点,我有一个:
- React应用程序,我使用创建脚本为生产构建
- Express应用程序,在与上述相同的回购协议中,应提供文件
/build (React js files after building src)
/dist (Express js files after building server)
/server (Express in typescript)
/src (React in typescript)
在/server/index.ts
中,我有如下内容:
const-app=express();
导出函数configureApp(){
//配置
app.set('env',config.environmentName.toLowerCase());
app.set('port',config.port);
app.set('https',config.https);
//中间件设置
app.use(compression());
应用程序使用(请求记录器);
应用程序使用(错误记录程序);
使用(express.json());
//下面就是它困扰我的地方
app.use(express.static(path.join(_dirname,../../build'));//这将始终在localhost:080上运行
//这是从未调用过的。我知道这段代码会像我把它放在不同的路径下一样工作(将`/`更改为`/blah`),我可以看到这些东西。但是对于localhost:8080,这是从未调用过的,这意味着我无法将任何内容传递给视图
应用程序使用(“/”,(请求:请求,响应)=>{
常量存储=配置存储({
“用户会话”:{
“用户名”:“伪造用户名”
}
});
const reduxState=JSON.stringify(store.getState());
const filePath=path.join(_dirname,“../../../build”,“index.html”);
fs.readFile(文件路径'utf8',(err,htmlData)=>{
返回res.send(htmlData.replace(“\uuuuredux\u STATE\uuuuxu={}”,“uuuuuredux\u STATE\uuuxu=${reduxState}”);
})
}
导出默认应用程序
当我在
localhost:8080
上启动页面时,它会显示页面,但是,当我想将值传递到上一行时,它不起作用。它只会在不在根级别时传递值(例如,localhost:8080/,如果我将其移动到localhost:8080/blah,我会得到传递的值)解决了。我必须改变两件事:
- from:
app.use(express.static(path.join(uu dirname,../../build'));
- 收件人:
(可以使用app.use('\static',express.static(path.join(\uu dirname,../../build'));
\static以外的其他内容
package.json
中,添加一个homepage
设置。我将“homepage”:“/static”
(这是我不理解的部分,我丢失了)。本节中的信息:但直到我在另一个repo中看到它,我才理解它解决了。我必须改变两件事:
- from:
app.use(express.static(path.join(uu dirname,../../build'));
- 收件人:
(可以使用app.use('\static',express.static(path.join(\uu dirname,../../build'));
\static以外的其他内容
package.json
中,添加一个homepage
设置。我将“homepage”:“/static”
(这是我不理解的部分,我丢失了)。本节中的信息:但直到我在另一个repo中看到它,我才理解它