2016-10-21 78 views
1

我的角度有問題。當我單獨運行它時,我的角碼代碼正常工作,但是當我使用express在localhost上訪問它時不起作用。會發生什麼是它單獨顯示html文件。 我的服務器代碼: *不能使用快遞的角碼

var express = require('express'), 
    app  = express(); 
app.get('/', function(req, res) { 
    res.sendfile('./app/client/main.html'); 
}); 
app.listen(3000, function() { 
    console.log('I\'m listening...'); 
}) 

我的角度控制器代碼是

var app = angular.module('tiks', []); 

app.controller('mainController', function($scope){ 

    $scope.posts = []; 
    $scope.newPost = {created_by: '', text: '', create_at: ''}; 

     $scope.post = function(){ 
     $scope.newPost.created_at = Date.now(); 
     $scope.posts.push($scope.newPost); 
     $scope.newPost = {created_by: '', text: '', created_at: ''}; 
    }; 
}); 

和angularised HTML代碼

<!--main.html--> 
<!doctype html> 
<html> 
    <head> 
    <title>Tiks</title> 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular.min.js"></script> 
    <script src="javascripts/tiks.js"></script> 
    </head> 
    <body ng-app="tiks"> 
    <div id='main' ng-controller="mainController"> 
    <form ng-Submit="post()"> 
     <input required type="text" placeholder="Your name" ng-model="newPost.created_by" /> 
     <textarea required maxlength="200" rows="3" placeholder="Say something" ng-model="newPost.text"></textarea> 
     <input class="button" type="submit" value="Chirp!" /> 
     </form> 
     <div id="post-stream"> 
     <h4>Tiks Feed</h4> 
       <div class='post' ng-repeat="post in posts | orderBy:'created_at':true" ng-class-odd="'odd'" ng-class-even="'even'"> 
      <p>{{post.created_by}} says {{post.text}} at {{post.created_at}}</p> 
      </div> 
     </div> 
     </div> 
    </div> 
    </body> 
</html> 

請幫助

+0

你沒有告訴快遞服務您的靜態內容https://expressjs.com/en/starter/static-files.html –

回答

2

你的HTML是問javascripts/tiks.jsscript標記,但您的服務器沒有配置爲服務它的路由。

嘗試檢查正在完成的請求,例如使用Google Chrome Developer tools network tab,並且當請求.js文件時,您可能會看到404錯誤。

您應該使用express.static來從文件夾提供文件,而不是像./app/client/main.html那樣單獨定義特定資源。

app.use('/', express.static(__dirname + '/app/client/')); 

那麼你將不得不訪問http://localhost/main.html來訪問它。

+0

你應該建議如何解決它,那就是利用中間件來處理靜態文件的https:/ /expressjs.com/en/starter/static-files.html –

+0

@JuanMendes true,done。謝謝指點出來:) –

+0

10倍的回覆我如何添加路由? –