我正在关注this node/angular tutorial并收到以下错误:
我通过节点引导我的应用程序,该节点呈现索引页面:
module.exports = function(app) {
app.get('*', function(req, res) {
res.sendfile('./public/index.html');
...
});
呈现:
<html ng-app="DDE">
<head>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.16/angular.min.js"></script>
<script src="bower_components/angular/angular.js"></script>
<script src="bower_components/angular-route/angular-route.js"></script>
<script src="js/app.js"></script>
<script src="js/controllers/main.js"></script>
</head>
<body>
This is the index page
<div ng-view></div>
我希望Node处理初始页面加载,但是Angular可以处理其余的路由。问题在于:似乎我的角度路由不起作用。我在那里放了一个自我执行fn run()
进行测试,但它没有被调用。
我只是想测试显示testpage.html
模板:
app.js文件:
angular
.module('DDE', [
'ngRoute'
])
.config(['$routeProvider',
function($routeProvider) {
$routeProvider.
when('/test', {
run : (function() {
alert('hit');
})(),
templateUrl: '../html/partials/testpage.html'
}).
otherwise({
redirectTo: '/test'
});
}
]);
角度误差不是很有帮助。我不确定Unexpected token <
是什么意思,因为我无法找到我在任何地方添加额外<
的地方。
编辑:
app.get('/', function(req, res) {
res.send('./public/index.html');
});
由于路径正确,它应该能够在凉亭组件中找到东西:
root/bower_components/angular/angular.js
root/bower_components/angular-route/angular-route.js
答案 0 :(得分:16)
您在服务器上的app文件中缺少某些设置来处理对服务器发出的所有请求。这是一个基本的示例工作快速文件,您可以根据自己的环境进行修改:
var express = require('express');
var app = express();
app.use('/js', express.static(__dirname + '/js'));
app.use('/bower_components', express.static(__dirname + '/../bower_components'));
app.use('/css', express.static(__dirname + '/css'));
app.use('/partials', express.static(__dirname + '/partials'));
app.all('/*', function(req, res, next) {
// Just send the index.html for other files to support HTML5Mode
res.sendFile('index.html', { root: __dirname });
});
此文件使用express.static
来提供特定目录中的任何内容,而不管名称或类型如何。另请注意,Express use语句按顺序处理,并且第一次匹配,第一次匹配后的任何匹配都将被忽略。因此,在此示例中,如果它不是/js
,/bower_components
,/css
或/partials
目录中的文件,则会返回index.html
。
答案 1 :(得分:0)
通过将我的server.js文件从DIST目录移动到上面的目录中,我能够解决意外令牌的问题。
所以我的文件夹/文件结构如下:
webroot-根文件夹
server.js
dist(文件夹)
浏览器(子文件夹)
服务器(子文件夹)