我正在尝试通过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>
在我通过节点运行时没有检测到或加载。
答案 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');
现在我可以看到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'));