未捕获的错误:[$injector:unpr] 未知提供程序:$cordovaPushV5Provider <- $cordovaPushV5

Posted

技术标签:

【中文标题】未捕获的错误:[$injector:unpr] 未知提供程序:$cordovaPushV5Provider <- $cordovaPushV5【英文标题】:Uncaught Error: [$injector:unpr] Unknown provider: $cordovaPushV5Provider <- $cordovaPushV5 【发布时间】:2016-10-06 06:53:10 【问题描述】:

我正在使用 cordovaPushV5 插件,以便能够在我的应用上实现推送通知。

我正在按照本教程中的方式进行操作:https://github.com/yafraorg/yafra/wiki/Blog-Ionic-PushV5

当我在浏览器上运行应用程序时,我在控制台中收到上述错误。

我正确安装了插件,并在我的 App.js 文件中包含了必要的代码行,如下所示。

有人可以帮我知道我哪里出错了吗?

/****ENABLE RECEIVING OF PUSH NOTIFICATIONS****/
/*
 * start within Platform ready
 */
$ionicPlatform.ready(function() 
    // register push notification and get local push token
    localStorage.myPush = ''; // I use a localStorage variable to persist the token
    $cordovaPushV5.initialize(  // important to initialize with the multidevice structure !!
        
            android: 
                senderID: "704649974960"
            ,
            ios: 
                alert: 'true',
                badge: true,
                sound: 'false',
                clearBadge: true
            ,
            windows: 
        
    ).then(function (result) 
        $cordovaPushV5.onNotification();
        $cordovaPushV5.onError();
        $cordovaPushV5.register().then(function (resultreg) 
            localStorage.myPush = resultreg;
            // SEND THE TOKEN TO THE SERVER, best associated with your device id and user
        , function (err) 
            // handle error
        );
    );
);

/*
 * Push notification events
 */
$rootScope.$on('$cordovaPushV5:notificationReceived', function(event, data)   // use two variables here, event and data !!!
    if (data.additionalData.foreground === false) 
        // do something if the app is in foreground while receiving to push - handle in app push handling
        
     else 
       // handle push messages while app is in background or not started
    
    if (Device.isOniOS()) 
        if (data.additionalData.badge) 
            $cordovaPushV5.setBadgeNumber(NewNumber).then(function (result) 
                // OK
            , function (err) 
                // handle error
            );
        
    

    $cordovaPushV5.finish().then(function (result) 
        // OK finished - works only with the dev-next version of pushV5.js in ngCordova as of February 8, 2016
    , function (err) 
        // handle error
    );
);

$rootScope.$on('$cordovaPushV5:errorOccurred', function(event, error) 
    // handle error
);
/****END ENABLE RECEIVING OF PUSH NOTIFICATIONS****/

【问题讨论】:

您是否在控制器中注入了$cordovaPushV5?您是否将 ngCordova.plugins.push_v5 模块作为依赖项添加到您的应用中? @RaviTeja 我注入了它,代码在里面:.run(function ($rootScope,$cordovaPushV5,$ionicPlatform, $state, AuthService, AUTH_EVENTS) //Code here 我没有添加依赖,但是我安装了 ngCordova。请问如何添加? 【参考方案1】:

同舟共济。看到我的index.html 文件中缺少一些东西。我正在使用ionic 项目。

<!-- ionic/angularjs js -->
<script src="lib/ionic/js/ionic.bundle.js"></script>
<script src="lib/ionic-service-core/ionic-core.js"></script>
<script src="lib/ionic-service-push/ionic-push.js"></script>

<!-- ngCordova -->
<script src="lib/cordova/ng-cordova.min.js"></script>

<!-- cordova script (this will be a 404 during development) -->
<script src="cordova.js"></script>
<script src="lib/ngCordova/dist/ng-cordova.min.js">

如果您看到 ng-cordova.min.js 文件有两个文件夹。 lib/ngCordova/dist/ng-cordova.min.js 具有 $cordovaPushV5 定义。

希望这会有所帮助。

【讨论】:

谢谢。我还按照 Ravi 上面所说的方法解决了这个错误。

以上是关于未捕获的错误:[$injector:unpr] 未知提供程序:$cordovaPushV5Provider <- $cordovaPushV5的主要内容,如果未能解决你的问题,请参考以下文章

注入 $cookieStore Angularjs 时未捕获的错误

AngularJS 错误:$injector:unpr 未知提供者

错误:[$injector:unpr] 未知提供者:在 AngularJS 服务测试中

错误:[$injector:unpr] 未知提供者:$routeProvider,无法实例化模块 myApp,原因是

错误:[$injector:unpr] 未知提供者:$localStorageProvider <- $localStorage <- login

yg错误精选