【发布时间】:2013-02-09 21:20:42
【问题描述】:
我会尽可能详细地解释这个问题。
我正在尝试将 AngularJS 与 Express 一起使用,但遇到了麻烦。我希望显示 HTML 文件(不使用模板引擎)。这些 HTML 文件将包含 AngularJS 指令。
但是,我无法显示一个简单的 HTML 文件本身!
目录结构如下:
Root
---->public
-------->js
------------>app.js
------------>controllers.js
---->views
-------->index.html
-------->partials
------------>test.html
---->app.js
public/js/app.js的内容是:
angular.module('myApp', []).
config(['$routeProvider', function($routeProvider) {
$routeProvider.when('/', {templateUrl: 'partials/test.html', controller: IndexCtrl});
$routeProvider.otherwise({redirectTo: '/'});
}]);
public/js/controllers/js的内容是:
function IndexCtrl() {
}
views/index.html中body标签的内容为:
<div ng-view></div>
就是这样。期望 AngularJS 将上面的视图替换为 test.html - views/partials/test.html,其内容是:
This is the test page!
包含在段落标签内。就是这样!
最后ROOT/app.js文件的内容是:
var express = require('express');
var app = module.exports = express();
// Configuration
app.configure(function(){
app.set('views', __dirname + '/views');
app.engine('html', require('ejs').renderFile);
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.static(__dirname + '/public'));
app.use(app.router);
});
app.configure('development', function(){
app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});
app.configure('production', function(){
app.use(express.errorHandler());
});
// routes
app.get('/', function(request, response) {
response.render('index.html');
});
// Start server
app.listen(3000, function(){
console.log("Express server listening on port %d in %s mode", this.address().port, app.settings.env);
});
现在,当我在根文件夹中执行$node app.js 时,服务器启动时没有任何错误。但是,如果我在浏览器中转到 localhost:3000,则 URL 会更改为 localhost:3000/#/,并且页面会卡住/冻结。我什至无法在 Chrome 中查看控制台日志!
这是我面临的问题。关于我做错了什么的任何线索?
【问题讨论】:
-
浏览器控制台抛出什么错误?
-
@charlietfl 可能什么都没有。大多数情况下,当页面似乎冻结时,是因为响应没有结束。
-
probably nothing??要么抛出错误,要么不抛出 -
@charlietfl 无。页面只是冻结。一段时间后,Chrome 会告诉我该页面响应时间过长,并询问我是否要终止该页面。
-
@charlietfl 终于想通了。在下面检查我的答案。