2016-05-04 64 views
1

我想通過node-express運行角度應用程序。Nodejs Express不加載腳本文件

文件結構

AngularNode 
    public 
     /core.js 
     /index.html 
    project.json 
    server.js 

server.js

var express = require('express'); 
var app = express(); 

app.get('*', function(req, res) { 
    res.sendfile('./public/index.html'); // load the single view file (angular will handle the page changes on the front-end) 
}); 

// listen (start app with node server.js) ====================================== 
app.listen(8000); 
console.log("App listening on port 8000"); 

的index.html

<html> 
<head> 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.5/angular.min.js"></script>  
    <script src="./core.js"></script> 
........ 

個4 core.js

angular.module('MySystem',[]) 
.controller('AppController',['$scope',function($scope){ 
    $scope.Name ="Testing Text"; 
}]); 

當我試圖運行使用node server.js此此應用,index.html文件得到正確裝入,然而這不檢測或裝載core.js文件。和我收到以下錯誤

Uncaught SyntaxError: Unexpected token <   core.js:1 
Uncaught Error: [$injector:modulerr] http://errors.angularjs.org/1.4.5/$injector/modulerr?p0=MySystem&p1=Error%3…ogleapis.com%2Fajax%2Flibs%2Fangularjs%2F1.4.5%2Fangular.min.js%3A19%3A381) angular.js:38 

現在,當我直接從資源管理器中打開index.html文件,這是工作時相同的代碼,我從core.js移動到內嵌HTML,<head>下與<script>塊是加工。

我不確定,爲什麼core.js當我運行節點時沒有檢測或加載。

回答

1

得到了與一些修改解決方案:

加線server.js app.use(express.static(__dirname + '/public'));var app = express();

案例修正後(人均l'f')功能從res.sendfile('./public/index.html');res.sendFile('./public/index.html');

現在我可以看到core.js被檢測到並且工作正常。

+0

還有一觀測和修正: 隨着'res.sendFile上面的代碼( './公共/ index.html中');',**節點控制檯** _throws ERROR_ '類型錯誤:路徑必須絕對或指定根res.sendFile' 修復按照'('./public/index.html',{" root':__dirname})修改此修改;'' – Kenz

0

app.get('*', function(req, res) {是所有get請求的所有規則,也將匹配./core.js請求。所以對於./core.js你的快車應用程序也將發送HTML文件。

您應該使用express.static代替:

var express = require('express'); 
var app = express(); 

app.use(express.static('./public'));