Javascript 角度js路由,500内部服务器错误
我有一个这样的目录结构-Javascript 角度js路由,500内部服务器错误,javascript,node.js,angularjs,express,angular-routing,Javascript,Node.js,Angularjs,Express,Angular Routing,我有一个这样的目录结构- -project -public -app -app.js ( angular app module ) -server -server.js ( node root js file ) -includes -layout.jade -scripts.jade -views -index.jade -partials
-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');
});
index.jade由server.js呈现-
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个内部服务器错误,用于登录,
app.js-将模板url更改为/partials/main/main/
angular.module('app').config(function($routeProvider,$locationProvider){
$locationProvider.html5Mode(true);
$routeProvider
.when('/', { templateUrl: '/partials/main/main', controller: 'mainCtrl'});
});
索引.jade-
将包含URL更改为相应的目录:
div(ng-include="'/partials/account/login'")
div(ng-include="'/partials/main/footer_main'")
server.js-替换:partialParams by*
app.get('/partials/*',function(req,res){
res.render('partials/' + req.params);
});
有人能告诉我哪里出了问题,或者我应该提供什么其他信息吗?当Angular请求模板时,它会设置与tempalte文件位置相关的基本路径。因此,现在从相对于父模板的不同目录调用对部分的任何调用。您将需要调整部分路径以解决此问题 也许是这样的:
div(ng-include="'../partials/account/login'")
因为Angular找不到分部,所以出现500错误-它可能试图获取main/partials/account/login
我必须更改
app.get('/partials/*',function(req,res){
res.render('partials/' + req.params);
});
至-
当我在控制台中打印req.params时,我发现它返回的是一个对象,而不是实际创建路由并错误地呈现部分的路径很抱歉没有在这里发布它,但我实际上是通过在控制台中通过谷歌搜索越来越多的调试发现了错误。这是因为当我将server.js中的渲染路径更改为req.params时,它返回了一个对象而不是字符串,我必须将其转换为字符串以获得正确的路径,更像res.params['0']
app.get('/partials/*',function(req,res){
res.render('partials/' + req.params['0']);
});