簡體   English   中英

Angular JS路由,500個內部服務器錯誤

[英]Angular js Routes, 500 internal server error

我有這樣的目錄結構-

-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”目錄中使用所有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

但是,如果我嘗試組織它們並進行以下更改,則我的控制台app.js在控制台中會收到500個內部服務器錯誤-將模板網址更改為/ 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- 用*替換:partialParams

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

誰能告訴我我要去哪里錯或應該提供什么其他信息?

Angular請求模板時,它會設置相對於臨時文件位置的基本路徑。 因此,現在從相對於父模板的其他目錄中調用對partials的任何調用。 您將需要調整部分路徑來解決此問題。

也許像這樣:

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

由於Angular無法找到部分,您將收到500錯誤-它可能正在嘗試獲取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時,我發現它返回一個對象,而不是實際創建路由並錯誤地渲染部分的路徑

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM