javascript - $locationProvider.html5Mode(true) 不适用于 tomcat

标签 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 模块 (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/

相关文章:

javascript - 使用 asp.net MVC 的 Angular 路由删除 url 上的哈希#

javascript - ngRoute 不改变 HTML。

javascript - Angular 路由包含 #!在 url 而不是#

javascript - 取消绑定(bind)右键单击jquery

javascript swapNode 在 Firefox 和 Chrome 中不起作用

html - ng-水平重复

javascript - 如何更改 Angular 工厂以在注入(inject)前解决

javascript - 在输入字段中使用子字符串

javascript - 没有嵌套 View 的嵌套 ui-router 状态?

javascript - 如何在 AngularJS 中注入(inject) Controller ?