Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 服务器端渲染(Express/React),提供未定义路由的文件_Javascript_Reactjs_Server Side Rendering_Static Files - Fatal编程技术网

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中看到它,我才理解它