Nodejs Express不加载脚本文件

时间:2016-05-04 17:14:41

标签: html angularjs node.js express

我正在尝试通过node-express运行角度应用程序。

1 文件结构

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

2 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"); 

3 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文件时,当我使用<head>下的同一代码从core.js移动到内联html时,这工作正在 OR {1}}阻止它正常工作。

我不确定,为什么<script>在我通过节点运行时没有检测到或加载。

2 个答案:

答案 0 :(得分:1)

通过一些修改得到了解决方案:

1 server.js中添加了一行 行后app.use(express.static(__dirname + '/public')); var app = express();

2 res.sendfile('./public/index.html');res.sendFile('./public/index.html');

的功能的案例更正(资本'f')

现在我可以看到core.js被检测到并且正常工作。

答案 1 :(得分:0)

app.get('*', function(req, res) {是所有get请求的catch all规则,也会匹配./core.js请求。因此,对于./core.js,您的快递应用程序也会发送html文件。

您应该使用express.static代替:

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

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