Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Erro ao injetar $state.

Bom dia galera.

Ontem eu finalizei o curso. Entretanto hoje fui criar um novo app do zero. Quando criei as rotas, ao rodar, foi lançada o seguinte erro:

Uncaught Error: [$injector:modulerr] Failed to instantiate module starter due to:
Error: [$injector:unpr] Unknown provider: $state
http://errors.angularjs.org/1.5.3/$injector/unpr?p0=%24state
    at http://localhost:8100/lib/ionic/js/ionic.bundle.js:13443:12
    at http://localhost:8100/lib/ionic/js/ionic.bundle.js:17793:19
    at getService (http://localhost:8100/lib/ionic/js/ionic.bundle.js:17946:39)
    at injectionArgs (http://localhost:8100/lib/ionic/js/ionic.bundle.js:17970:58)
    at Object.invoke (http://localhost:8100/lib/ionic/js/ionic.bundle.js:17992:18)
    at runInvokeQueue (http://localhost:8100/lib/ionic/js/ionic.bundle.js:17893:35)
    at http://localhost:8100/lib/ionic/js/ionic.bundle.js:17902:11
    at forEach (http://localhost:8100/lib/ionic/js/ionic.bundle.js:13696:20)
    at loadModules (http://localhost:8100/lib/ionic/js/ionic.bundle.js:17883:5)
    at createInjector (http://localhost:8100/lib/ionic/js/ionic.bundle.js:17805:19)
http://errors.angularjs.org/1.5.3/$injector/modulerr?p0=starter&p1=Error%3A…3A%2F%2Flocalhost%3A8100%2Flib%2Fionic%2Fjs%2Fionic.bundle.js%3A17805%3A19)

Como não tinha nada errado. Resolvi testar a aplicação do curso e para minha surpresa dá o mesmo erro!

Não consigo achar algo nos fóruns online. O erro é novo, alguém pode fazer um teste ou ajudar a solucionar?

Grato.

6 respostas

É como o provedor do $state não existisse mas isso é responsabilidade do ionic quando importamos o arquivo lib/ionic/js/ionic.bundle.js ele já carrega as dependências do angular ou estou errado?

Estou tentando aprofundar no ionic, mas já tá me decepcionando em coisas tão simples. Pois se eu escolho um framework integrado no angular o mínimo que espero é não ter esses problemas. Perder 2h tentando resolver problema do próprio framework, não tem preço!

Partiu Onsen UI, tchau Ionic.

Se eu entendi corretamente a mensagem de erro, o problema pode estar no controller.

Quando você criar um controller, você precisa injetar os recursos do angular que você quer utilizar. Um exemplo genérico:

//define a module
var mainApp = angular.module("mainApp", []);

//create a value object as "defaultInput" and pass it a data.
mainApp.value("defaultInput", 5);
...

//inject the value in the controller using its name "defaultInput"
mainApp.controller('CalcController', function($scope, CalcService, defaultInput) {
   $scope.number = defaultInput;
   $scope.result = CalcService.square($scope.number);

   $scope.square = function() {
      $scope.result = CalcService.square($scope.number);
   }
});

No caso deste exemplo, foi injetado o "$scope". Dentro do $scope tem uma variável "number", "result" e uma função "square".

Esse conteúdo do $scope pode ser utilizada pela view do controlador. Se você não fizer a injeção da dependência, isso não é possível

Para os colegas ajudarem, você pode postar o código que você criou.

É isso sim que o erro diz. Mas não faz sentido pois estou injetando corretamente o $state e $stateProvider na rota.

angular.module('starter')
  .config(function($stateProvider, $state) {

    $stateProvider.otherwise('login');

    $stateProvider.state('login', {
      url: '/login',
      templateUrl: 'templates/login.html',
      controller: 'LoginController'
    });
  });

O mais curioso é que após finalizar o curso, rodei a aplicação e deu o mesmo erro.

Boa noite,

Alguém poderia apenas executar um "npm update" e executar o projeto que fez no curso e vê acontece o mesmo erro?

Eu agradeço.

solução!

Achei a solução.

Primeiro, não é necessário injetar $state, pois é uma instância de $stateProvider.

Segundo: é preciso injetar $urlRouterProdiver.

Acho que algumas pessoas terão esse problema caso atualizem os módulos do app.

Olá pessoal! Hugo, tu podes me ajudar?

Eu criei o seguinte arquivo de rota:

angular.module('starter')
.config(function($stateProvider,$urlRouteProvider){

     $urlRouteProvider.otherwise('listagem');

     $stateProvider

     .state('listagem',{
         url: '/listagem',
         templateUrl: 'template/listagem.html',
         controller: 'ListagemController'
     });
 })

Mas o angular me mostra um erro de provider desconhecido!

Resolvi! Tive muitos problemas que não faziam muito sentido...no final das contas o que funciona para esse curso são as versões: Nodejs v6.11.2 + Ionic 3.7.0 Depois que instalei essas duas versões os códigos do curso não dão mais erros! Valeu galera.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software