node.js - Express + Angular 路由导致无限循环+崩溃

标签 node.js angularjs express

我正在使用 Express 和 Angular 开发一个 Node 应用程序。我正在使用 Angular 进行路由,我的路由设置如下:

app.config(['$routeProvider', function ($routeProvider) {
$routeProvider.when('/', {
    templateUrl: '/partials/main'
    //controller: 'IndexController'
}).when('/discover', {
    templateUrl: '/partials/discover'
}).when('/user/home', {  //HERES THE PROBLEM CHILD!!!!!
    templateUrl: '/partials/user/home'
}).otherwise({
    redirectTo: '/'
});
}]).config(['$locationProvider', function ($locationProvider) {
    $locationProvider.html5Mode(true);
}]);

现在,每当我尝试调用 /user/home - 页面进入无限循环并不断重新加载 Controller 。我可以在 Node 控制台中看到该页面是从 partials/user/home 调用的,其中肯定包含一个 Jade 文件。我检查了其他帖子,其中大部分都是在部分路径的开头用 ass the / 解决的,这对这里没有帮助。如果我将 home.jade 转移到没有子目录的 /partials 目录中,页面加载正常。有什么想法吗?

更新:似乎只要我尝试在任何子目录中加载部分,就会发生无限循环。

每个请求:

Node ——App.js:

app.get('/', routes.index);

app.get('/partials/:name', routes.partials);
app.get('*', routes.index);

和routes/index.js

exports.index = function(req, res) {
res.render('index', { title: 'Open Innovation Station' });
}

exports.partials = function(req, res) {
res.render('partials/' + req.params.name);
}

最佳答案

使用 html5Mode(true) ,你将不得不关心任何相对路径——你正在使用你的局部路径。我相信,您的案例中的递归可以通过添加来解决:

<base href="/"></base>

到您的<head> .

关于node.js - Express + Angular 路由导致无限循环+崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18553847/

相关文章:

javascript - Angular 中的 url 更改时模板闪烁

node.js - 如何暂时在不同的端口运行 Node 应用程序?

javascript - res.redirect() 在 Chrome 中不起作用 - 已找到。重定向至

sql - 如何在node.js中获取数据库中的数据?

javascript - 如何通过 NodeJS 访问私有(private) Google 日历?

node.js - 是否可以从下载的包中在本地运行 npm 包安装?

javascript - Mongoose 不保存数据

node.js - 如何获取具有不同值(其中其他值最低)的 (Node.js) MongoDB 文档?

javascript - 如何使用 ngroute 和单选按钮来更改 View

javascript - Angularjs 指令