gpt4 book ai didi

node.js - 使用 Express 服务 React 应用程序时从 express.static 中排除 index.html

转载 作者:行者123 更新时间:2023-12-05 04:55:47 25 4
gpt4 key购买 nike

我正在使用 Express 提供一个 create-react-app build,并在提供之前将一些脚本标签附加到 index.html。由于我在服务之前处理 index.html 文件,所以我不希望我的 express.static 中间件处理对 //index.html。以下是我为完成这项工作所做的努力:

app.use(
[/^\/index\.html/, /^\//],
express.static(path.join(__dirname, "../../build"))
);

app.get("/*", function (req, res) {
// logic to manipulate index.html
res.send($.html());
});

但这只会给我一个空白的白屏,即使插入了原始的 html 代码所以我假设静态中间件仍在处理 / 请求,它只是停止为其他静态服务 Assets 。

如何配置此代码,以便我的 express.static 停止覆盖我的 /* 路由?

将路由保留为 /* 很重要,因为我希望它能够处理客户端应用程序中 react-router 中定义的所有路由。所以我不能将 express.static 中间件移动到 /* 路由下方,否则会覆盖对静态 Assets 的所有请求。

最佳答案

你可以通过{index: false}作为 express.static 的第二个参数,这将排除从 build 目录发送的 index.html

app.use(express.static(path.join(__dirname, "../../build"), {index: false}));

app.get("*", (req, res) => {
// logic to manipulate index.html
res.send($.html());
});

关于node.js - 使用 Express 服务 React 应用程序时从 express.static 中排除 index.html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65210784/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com