我使用的是Angular 1.5.0,angular-ui-router和Express.js。
我有两个不同的问题,我相信它们是由同一个问题引起的,但我无法解决。
当我将html5Mode设置为true时,就会发生这种情况。以下是我的表现方式。
.config(
['$stateProvider', '$urlRouterProvider', '$locationProvider',
function($stateProvider, $urlRouterProvider, $locationProvider) {
$locationProvider.html5Mode({
enabled: true,
requireBase: false
});
);
Express.js代码,可以手动访问网址
app.all('*', function(req, res){
res.sendFile(__dirname + '/public/index.html');
});
1-)如果我尝试访问http://localhost/contacts
或http://localhost/about
,我就能做到。但是,如果我尝试http://localhost/contacts/1
或http://localhost/contacts/1/item/a
,我会得到如下页面。
2-)如果我点击通讯录> Alice(或任何其他)>电话号码(或任何其他列表项),我得到了导航栏的副本。如下所示。
我如何解决它,更重要的是,导致这种情况的原因是什么?
编辑:如果我将.html文件更改为绝对网址(如/contacts.list.html
),它运行良好(问题2已解决)但我仍然无法手动访问网址,它尝试获取错误的css / js文件。
这是输出(终端)。我还在Chrome开发者工具上看到每个.js文件出现Uncaught SyntaxError: Unexpected token <
错误,因此存在问题。
GET /contacts/1/item/a 304 0.798 ms - -
GET /contacts/1/item/bootstrap.min.css 304 1.828 ms - -
GET /contacts/1/item/styles.css 304 1.798 ms - -
GET /contacts/1/item/angular/angular-ui-router.js 304 4.444 ms - -
GET /contacts/1/item/app.js 304 5.266 ms - -
GET /contacts/1/item/contacts.js 304 7.612 ms - -
GET /contacts/1/item/contacts-service.js 304 7.744 ms - -
GET /contacts/1/item/utils-service.js 304 2.413 ms - -
GET /favicon.ico 304 0.516 ms - -
编辑2:如果我将js和css路径改为绝对路径,我也可以手动访问http://localhost/contacts/1/item/a
之类的网址,但我不想这样做。我喜欢使用相对网址。
这是我的插曲。 (这是ui-router团队提供的示例应用程序,我在app.js和contacts.js中注释了html5部分,因为plnkr不提供服务器端渲染)
http://plnkr.co/edit/zm8v8VYSGzLbOzfcCB6O?p=preview
我尽量保持清晰,如果您希望我添加额外的内容,请随时添加评论。