javascript - Express + Angular,始终发送 html 请求的索引文件,而不是 api 请求

标签 javascript angularjs node.js express

我试图让我的 Express 应用程序始终返回“index.html”,它是包含我的 Angular 应用程序脚手架的布局文件。

在我的 Angular 应用程序中,当我位于路线“/home”时,我希望能够刷新页面,因此要做到这一点,我需要我的路由器返回index.html。

对于我的 html 路由,我使用以下内容 - 我的所有模板 (home.html) 都存储在/templates 目录中:

var express = require("express"),
    router = express.Router(),
    path = require("path"),
    root = path.join(__dirname, "../../");

router.use(express.static(__dirname + "/../../templates"));

router.get("*", function(req, res) {

    //Response options
    var options = {
        root: root, 
    };

    res.sendFile("layouts/index.html", options);
});

这显然会影响我的 REST API 请求,因为它们不会发回 index.html。

例如,我有一个/islands api 路由,它从我的 mongo 数据库返回“Island”对象。

var router = require("express").Router(),
    Island = require("../../model/island");

router.get("/", function (req, res, next) {

    Island.findOne({user_id: req.user.email}, function (error, island) {
        if (error) { return next(error); }

        return res.json(island);

    });
});

现在返回给我index.html。

这是我如何使用上面的 Controller ,以防有帮助。

app.use(require("./controllers/api/static")); //Returning static assets

app.use(require("./controllers/api/views")); //This is where the get route for returning .index.html is stored

app.use("/api/island",require("./controllers/api/island"));  

我对如何让 index.html 只返回 html 请求而不返回对我的 api 的请求感到有点困惑。

最佳答案

检查路由的顺序,将 api 路由放在 sendfile 路由之前。

关于javascript - Express + Angular,始终发送 html 请求的索引文件,而不是 api 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34117128/

相关文章:

node.js - 由于 TypeScript 中导入时的拼写错误,静态数据被初始化了两次

javascript - 无法从函数 ng-click 获取返回值

javascript - 有没有办法在 IE 中获取边框半径和渐变背景?

javascript - 如何使页面自动滚动到内容中的元素?

javascript - 如何加载在 Angular 中设置为字符串的 JSON 数值?

javascript - 类型错误:mitsukuApi.send 不是函数

javascript - 打字机功能

AngularJS ui-router 状态不会在后面刷新

javascript - 如何将应用程序从 Sublime Text 引入 Web IDE 进行共享?

javascript - 某些路由会跳转到 404 错误页面 Express