Express +angular度路由导致无限循环+崩溃

我正在使用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 – 页面进入一个无限循环,并不断重新加载控制器。 我可以在节点控制台看到页面是从partials/user/home调用的,它肯定包含一个Jade文件。 我检查了其他post,其中大部分都是在部分path开始时用屁股解决的,这在这里没有帮助。 如果我把home.jade转换到没有子目录的/partials目录下,页面加载的很好。 有任何想法吗?

更新:似乎无限循环发生任何时候我尝试加载部分的任何子目录中的部分。

每个请求:

节点 – 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); } 

您为分部指定的路由规则将不匹配部分文件夹内的子目录(例如/ partials / folder / file)的任何请求。 路由path匹配器把/作为variables之间的分隔符。 因此,为了支持在partials目录中有子文件夹,你将不得不向你的应用程序添加另一个规则,并定义一个函数来处理这个模板。 如下所示:

app.js

 app.get('/partials/:directory/:file', routes.subpartials); 

路线/ index.js

 exports.subpartials = function (req, res) { var file = req.params.file, directory = req.params.directory; res.render('partials/' + directory + '/' + file); }; 

使用html5Mode(true) ,你将不得不关心任何相对path – 你正在使用你的部分。 我相信你的案例中的recursion本来可以通过增加:

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

到你的<head>