AngularJS路由,500内部服务器错误

我有这样的目录结构 –

-project -public -app -app.js ( angular app module ) -server -server.js ( node root js file ) -includes -layout.jade -scripts.jade -views -index.jade -partials -main -main.jade -about.jade -about-vid.jade footer_main.jade -account -login.jade 

现在,当我尝试和部分所有在一个'partials'目录中一切工作正常,但是当我尝试组织他们在单独的目录我得到内部服务器错误。 这里是正常的相关代码 – app.js –

 angular.module('app',['ngResource','ngRoute']); angular.module('app').config(function($routeProvider,$locationProvider){ $locationProvider.html5Mode(true); $routeProvider .when('/', { templateUrl: '/partials/main', controller: 'mainCtrl'}); }); 

server.js代码 –

 app.use(express.static(__dirname + '/public')); app.get('/partials/:partialPath',function(req,res){ res.render('partials/' + req.params.partialPath); }); app.get('*',function(req,res){ console.log(mongoMessage); res.render('index'); }); 

由server.js呈现的index.jade –

 include ../includes/layout .header-white.navbar.navbar-default.navbar-static-top .container .navbar-header button(data-target=".navbar-collapse",data-toggle="collapse",class="navbar-toggle btn navbar-btn") span.icon-bar span.icon-bar span.icon-bar a(href="/",class="navbar-brand") img(alt="CampuStop",id="logoimg",src="/img/logo_big.png",style="height:74px") div(ng-include="'/partials/login'") block main-content div(ng-view) div(ng-include="'/partials/footer_main'") include ../includes/scripts 

但是,如果我尝试组织他们,并作出以下更改,我得到500内部服务器错误在控制台为我的login,app.js – 更改模板url/ partials / main / main /

 angular.module('app').config(function($routeProvider,$locationProvider){ $locationProvider.html5Mode(true); $routeProvider .when('/', { templateUrl: '/partials/main/main', controller: 'mainCtrl'}); }); 

index.jade – 将包含url更改为相应的目录:

 div(ng-include="'/partials/account/login'") div(ng-include="'/partials/main/footer_main'") 

server.js – 用*replacepartialParams

 app.get('/partials/*',function(req,res){ res.render('partials/' + req.params); }); 

任何人都可以告诉我哪里错了,或者我应该提供哪些其他信息?

当Angular请求一个模板时,它会设置相对于tempalte文件位置的基本path。 因此,对部分的调用现在正从相对于父模板的不同目录中调用。 你会想调整你的部分path来解决这个问题。

也许是这样的:

 div(ng-include="'../partials/account/login'") 

你正在得到500错误,因为Angular找不到部分 – 它可能试图获得main/partials/account/login

我不得不改变

 app.get('/partials/*',function(req,res){ res.render('partials/' + req.params); }); 

至 –

 app.get('/partials/*',function(req,res){ res.render('partials/' + req.params['0']); }); 

因为当我在控制台打印req.params我发现它返回一个对象,而不是实际创build路由的path和渲染部分错误