$ locationProvider.html5Mode(true)不能与tomcat一起使用

时间:2016-10-14 11:52:57

标签: javascript angularjs ngroute

我想删除"#"来自我的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 Module(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
                });
            }
        }
    ]);

...
...

我已在base href="/"的主标记中添加了index.html标记。

我不确定是否必须在tomcat端进行一些更改以使其正常工作或存在其他问题..

请帮忙。

由于

1 个答案:

答案 0 :(得分:1)

myAngularApp.config([ '$routeProvider', '$locationProvider', function($routeProvider, $routeParams, $locationProvider) {

应该是

myAngularApp.config([ '$routeProvider', '$locationProvider', function($routeProvider,  $locationProvider) {