我正在尝试从 Angular JS 应用程序的 URL 中删除“#”。它目前部署在我所在计算机上的 tomcat 服务器上,可以通过自定义端口(例如:8081)进行访问。
我查看了各种文章以及 stackoverflow 上的不同线程来解决该问题。但一切都是徒劳。
当我尝试使用 localhost:8081/myAngularApp
访问我的应用程序的主页时,出现以下错误(来自浏览器的开发人员控制台)。
Uncaught Error: [$injector:modulerr] Failed to instantiate module myAngularApp due to:
TypeError: Cannot read property 'html5Mode' of undefined
at http://localhost:8081/myAngularApp/js/angularMyApp.js:34:31
.....
.....
如果我删除 $locationProvider.html5Mode({...});
那么我就可以使用像 http://localhost:8081/myAngularApp/这样的哈希来访问应用程序#/
这是我的 JS 文件中的片段,用于配置 Angular 模块 (myAppMain.js):
...
...
myAngularApp.config([ '$routeProvider', '$locationProvider',
function($routeProvider, $routeParams, $locationProvider) {
$routeProvider
// route for the login page
.when('/login', {
templateUrl : 'pages/login.html',
controller : 'loginController'
})
// route for the dashboard page
.when('/dashboard', {
templateUrl : 'pages/dashboard.html',
controller : 'dashboardController'
});
// route for the FAQ page
.when('/faq', {
templateUrl : 'pages/faq.html',
controller : 'faqController'
})
// route for the About us page
.when('/aboutUs', {
templateUrl : 'pages/aboutUs.html',
controller : 'aboutUsController'
});
.otherwise({redirectTo: '/'
});
if(window.history && window.history.pushState){
$locationProvider.html5Mode({
enabled: true,
requireBase: false
});
}
}
]);
...
...
我已经在 index.html
的 head 标签中添加了 base href="/"
标签。
我不确定是否需要在 tomcat 端进行一些更改才能使其正常工作,或者是否存在其他问题。
请帮忙。
谢谢
最佳答案
myAngularApp.config([ '$routeProvider', '$locationProvider', function($routeProvider, $routeParams, $locationProvider) {
应该是
myAngularApp.config([ '$routeProvider', '$locationProvider', function($routeProvider, $locationProvider) {
关于javascript - $locationProvider.html5Mode(true) 不适用于 tomcat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40042534/