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?

将我的 python 应用程序部署到 heroku 的问题

将React + NodeJS + Express + MySQL应用程序部署到Heroku仅部署服务器而不是React

将 docker 镜像部署到 heroku

尽管使用了所有默认的 create-react-app 配置,Heroku “不是来自 webpack 的内容是从 /app/public 提供的”

Heroku 上的 Wordpress Duplicator 安装程序