【发布时间】:2015-05-29 11:38:16
【问题描述】:
我在尝试将html5Mode 与 ui-router 一起使用时遇到上述错误。谁能指出我做错了什么?
TypeError: Cannot read property 'replace' of undefined
at bd (angular.js:10555)
at Object.<anonymous> (angular.js:11403)
at l.$get.l.$digest (angular.js:14222)
at l.$get.l.$apply (angular.js:14493)
at angular.js:1449
at Object.e [as invoke] (angular.js:4182)
at d (angular.js:1447)
at sc (angular.js:1467)
at Jd (angular.js:1361)
at HTMLDocument.<anonymous> (angular.js:26086)
angular.js 中的那个段是:
10554 function trimEmptyHash(url) {
10555 return url.replace(/(#.+)|#$/, '$1');
10556 }
路由文件:
(function(){
'use strict';
angular
.module('app')
.config(routes);
routes.$inject = ['$stateProvider', '$locationProvider'];
function routes($stateProvider, $locationProvider) {
// Configure app states
$stateProvider
.state('app', {
abstract: true,
templateUrl: 'modules/app/app.html',
controller: 'AppController'
})
.state('app.home', {
url: '/',
templateUrl: 'modules/home/index.html'
});
$locationProvider.html5Mode(true);
}
})();
我已经在 html 中设置了基本 url:
<base href="/app/" />
【问题讨论】:
-
这些解决方案似乎不起作用。无论如何,我所有的网址都是小写的,所以我不确定这是否适用。
-
所以
url是未定义的。查看堆栈跟踪,看看谁在调用trimEmptyHash。找到应该设置它的代码,看看为什么它是未定义的。 -
您是否连接并缩小了您的 js 文件?确保你重新处理它们。 @alexkb answer 已经解决了这类问题。
标签: angularjs