Heroku Node/React 部署将所有内容路由到 index.html
Posted
技术标签:
【中文标题】Heroku Node/React 部署将所有内容路由到 index.html【英文标题】:Heroku Node/React Deployment Routes Everything to index.html 【发布时间】:2021-10-29 07:39:21 【问题描述】:我有一个 app.js
节点主文件,我在其中定义我的 api 路径如下
app.get('/api/users', UserController.get);
在同一个文件下面我有以下内容
app.use(express.static(path.resolve(__dirname, "./front/build")));
app.get("*", function (request, response)
response.sendFile(path.resolve(__dirname, "./front/build", "index.html"));
);
index.html
成功服务于 React App。
如果我在 my-app.herokuapp.com 的某个地方打开我的 heroku 应用程序,它将打开预期的 React 应用程序,但问题是 my-app.herokuapp.com/api/users 还提供 index.html 文件而不是端点应该返回的 JSON。
我试过了 我将端点路由定义替换为“”定义之前(还不够) 更重要的是,我删除了对 index.html 的重定向,但 heroku 仍然使用任何类型的请求打开 index.html 页面(“”重定向仍然有效)。那么,它可能缓存了一些东西?
是关于缓存(如何清理?)还是任何其他建议?
【问题讨论】:
【参考方案1】:您应该为每个功能创建路线并以适当的流程工作, 例如: //app.js
app.use("/api/user",userRoutes);
//用户路由
router.post("/signup",UserController.signup);
//用户控制器
exports.signup = async (req,res,next) =>
//Signup function to add a new user when the user provides required info
这样,您的代码将易于访问且效率更高
【讨论】:
以上是关于Heroku Node/React 部署将所有内容路由到 index.html的主要内容,如果未能解决你的问题,请参考以下文章
如何将带有 django 的 react.js webpack 部署到 heroku?
将React + NodeJS + Express + MySQL应用程序部署到Heroku仅部署服务器而不是React
尽管使用了所有默认的 create-react-app 配置,Heroku “不是来自 webpack 的内容是从 /app/public 提供的”