【问题标题】:Express routing serves angularjs content but not api快速路由提供 angularjs 内容但不提供 api
【发布时间】:2018-05-14 19:02:02
【问题描述】:

我正在使用 nodejs / express 作为我的 Web 应用程序的服务器端。

另一个不再与我合作的开发人员将 angularjs dist 捆绑包与服务器应用程序合并,以便运行“node index.js”,它将同时提供 angular 前端内容和服务器端 api。这是为了改善慢负载。

由于使 nodejs 后端服务于 ../dist 文件夹前端,我遇到了一个问题,我正在尝试解决路由问题。

有一条我当前注释掉的包罗万象的路线,如下所示。

当它被注释掉时,我可以点击所有 api 端点,但它不会提供 ../dist 文件夹中的 angularjs 内容。

当捕获所有路由没有被注释掉时,它会为我的角度内容提供服务,但无法到达我的任何 api 端点。所有对 api 端点的调用都返回 200,但从未到达 api 端点。

【问题讨论】:

  • 分离您的环境。为后端和前端创建两个服务器。
  • 我最初拥有的是 Angularjs 由 apache 提供服务(或 ng 在本地提供服务),然后单独运行 nodejs - 合并两者的开发人员说这将改善 Angular 的加载时间

标签: angularjs node.js angular-ui-router


【解决方案1】:

定义路线时,顺序很重要。如果您的第一个条目是一个包罗万象的条目,那么它实际上会捕获所有内容,甚至是对/api 的请求。所以把你的全部内容放在最后一个条目:

app.get("/api", function(req,res) {
  res.json({
    message: "Hello World!"
  });
});

app.get("*", function(req,res) {
  res.sendFile(__dirname + "/dist/index.html");
});

明确声明您的 SPA 路线也是明智之举,即使您已经有一个包罗万象:

app.get("/", function(req,res) {
  res.sendFile(__dirname + "/dist/index.html");
});

app.get("/api", function(req,res) {
  res.json({
    message: "Hello World!"
  });
});
app.get("*", function(req,res) {
  res.sendFile(__dirname + "/dist/index.html");
});

【讨论】:

    猜你喜欢
    • 2020-07-07
    • 2021-12-10
    • 2017-08-16
    • 1970-01-01
    • 2015-08-02
    • 1970-01-01
    • 2019-09-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多