AngularJS:未知的提供者:$idleProvider

7
很多其他人有类似的问题,但解决方法似乎不适用于我的特定问题。
我试图使用ngIdle(https://github.com/HackedByChinese/ng-idle)库,但似乎无法运行,会出现以下错误-Uncaught Error: [$injector:modulerr] Failed to instantiate module myAuditModule due to: Error: [$injector:unpr] Unknown provider: $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>

唯一的依赖是您需要使用1.2或更高版本的angular,而我正在使用。

有什么想法吗?

2个回答

6

在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

您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - user3407039
1
啊,算了吧,我忘记在去掉美元符号后改变首字母大写了 :( - user3407039

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。我有点茫然。 - user3407039
啊,算了,我忘记在去掉 $ 后更改大写字母了 :( - user3407039

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接