【问题标题】:AngularJS: Unknown provider: $idleProviderAngularJS:未知提供者:$idleProvider
【发布时间】:2015-05-27 15:41:37
【问题描述】:

很多其他人有类似问题,但解决方案似乎不适用于我的具体问题。

我正在尝试使用 ngIdle (https://github.com/HackedByChinese/ng-idle) 库,但似乎无法在不出现此错误的情况下运行它 - 未捕获的错误:[$injector:modulerr] 无法实例化模块 myAuditModule,原因是:错误: [$injector:unpr] 未知提供者:$idleProvider

这是我的模块代码,

(function () {
    app = angular.module("myAuditModule", ['ui.bootstrap', 'ngRoute', 'ngCookies', 'ngDragDrop', 'ngIdle']);

    // configure the routes
    app.config(function ($routeProvider, $idleProvider, $keepaliveProvider) {

        $idleProvider.idleDuration(10 * 60); // 10 minutes idle
        $idleProvider.warningDuration(30); // 30 second warning
        $keepaliveProvider.interval(5 * 60); // 5 minute keep-alive ping

        $routeProvider

             //route for the logging in page
            .when('/', {
                templateUrl: 'Views/Login.html',
                controller: 'loginController'
            })

    });

    })();

该文件已包含在我的项目中,并且当网站运行时它在开发者控制台中显示 -

   <script src="/Scripts/angular-idle.js"></script>

唯一的依赖是你需要使用 angular 1.2 或更高版本,我就是。

有什么想法吗?

【问题讨论】:

    标签: angularjs ng-idle


    【解决方案1】:

    将 app.config 中的 $idleProvider 替换为 IdleProvider 并尝试

      app.config(function ($routeProvider, IdleProvider, KeepaliveProvider) {
    
        IdleProvider.idleDuration(10 * 60); // 10 minutes idle
        IdleProvider.warningDuration(30); // 30 second warning
        KeepaliveProvider.interval(5 * 60); // 5 minute keep-alive ping
    
        .....
    });
    

    还将$keepaliveProvider 替换为KeepaliveProvider

    【讨论】:

    • 您好,感谢您的回复。我现在仍然遇到同样的问题 idleprovider 没有 $ 是未知的。如果我搜索 angular-idle.js 文件,我找不到 IdleProvider 的任何引用,所以这可能就是为什么......在我最初帖子的链接中,我只是从 github 复制了一个文件(angular-idle.js)并将其放入我的项目中,这不正确吗?它应该在哪里找到 idleprovider。我在这里有点茫然。
    • 啊,没关系,我把$去掉后忘记了大写字母的变化:(
    【解决方案2】:

    尝试注入 IdleProvider 而不是 $idleProvider 同样适用于 KeepAliveProvider

    所以你的新代码应该是

    (function () {
            app = angular.module("myAuditModule", ['ui.bootstrap', 'ngRoute', 'ngCookies', 'ngDragDrop', 'ngIdle']);
    
            // configure the routes
            app.config(function ($routeProvider, IdleProvider, KeepaliveProvider) {
    
                $idleProvider.idleDuration(10 * 60); // 10 minutes idle
                $idleProvider.warningDuration(30); // 30 second warning
                $keepaliveProvider.interval(5 * 60); // 5 minute keep-alive ping
    
                $routeProvider
    
                     //route for the logging in page
                    .when('/', {
                        templateUrl: 'Views/Login.html',
                        controller: 'loginController'
                    })
    
            });
    
            })();
    

    【讨论】:

    • 您好,感谢您的回复。我现在仍然遇到同样的问题 idleprovider 没有 $ 是未知的。如果我搜索 angular-idle.js 文件,我找不到 IdleProvider 的任何引用,所以这可能就是为什么......在我最初帖子的链接中,我只是从 github 复制了一个文件(angular-idle.js)并将其放入我的项目中,这不正确吗?它应该在哪里找到 idleprovider。我在这里有点茫然。
    • 啊,没关系,我把$去掉后忘记了大写字母的变化:(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-01
    • 1970-01-01
    • 2018-06-14
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    相关资源
    最近更新 更多