Angular JS:“未捕获的错误:[$ injector:modulerr]无法实例化模块......”和一个空白视图

时间:2015-03-23 18:52:07

标签: ruby-on-rails angularjs node.js angular-ui-router angular-routing

我正在通过Thinkster tutorial使用Ruby on Rails实现它。但是,我遇到了一些错误,因为我所有的狩猎/试验和错误都无法为解决方案提供资金。

我在加载页面时遇到以下错误:

Uncaught Error: [$injector:modulerr] Failed to instantiate module flapperNews due to:
Error: [$injector:modulerr] Failed to instantiate module Devise due to:
Error: [$injector:nomod] Module 'Devise' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.

这来自来源angular.js

此刻它还只呈现一个空白页面,我不确定这是否相关。

所有视图都由Angular UI路由器处理,所以我的假设是我的实现存在问题,而在稍微阅读时,似乎在加载.js文件时出现此错误在错误的顺序;但是,我没有找到任何解决方案,也不知道这两个问题是捆绑在一起还是完全分开。

这里有一些我想象的相关代码:

的application.js:

//= require angular
//= angular-devise
//= require angular-rails-templates
//= require angular-ui-router
//= require_tree

页眉:

<head>
  <title>...</title>
  <%= stylesheet_link_tag    'application', media: 'all' %>
  <%= javascript_include_tag 'application' %>
  <%= csrf_meta_tags %>
</head>

根据教程,在app.js文件中定义了路径(我希望正确地包含所有内容):

angular.module('flapperNews', ['ui.router', 'templates', 'Devise'])
//config file    
.config([ 
'$stateProvider',
'$urlRouterProvider',
function($stateProvider, $urlRouterProvider) {

  $stateProvider //router
    .state('home', {
      url: '/home',
      templateUrl: 'home/_home.html',
      controller: 'MainCtrl'
    });
  $stateProvider  
    .state('posts', {
      url: '/posts/{id}',
      templateUrl: 'posts/_posts.html',
      controller: 'PostsCtrl'
    });
  $stateProvider  
    .state('login', {
      url: '/login',
      templateUrl: 'auth/_login.html',
      controller: 'AuthCtrl',
      onEnter: ['$state', 'Auth', function($state, Auth) {
        Auth.currentUser().then(function (){
          $state.go('home');
        });
      }]
    });
  $stateProvider  
    .state('register', {
      url: '/register',
      templateUrl: 'auth/_register.html',
      controller: 'AuthCtrl',
      onEnter: ['$state', 'Auth', function($state, Auth) {
        Auth.currentUser().then(function (){
          $state.go('home');
        });
      }]
    });

  $urlRouterProvider.otherwise('home');
}]);

我考虑过问题的另一个问题是依赖关系无法正常协作,所以现在他们来自这里:

我的Gemfile:

source 'https://rubygems.org'


gem 'rails', '4.2.0'
gem 'sqlite3'
gem 'sass-rails', '~> 5.0'
gem 'uglifier', '>= 1.3.0'
gem 'jbuilder', '~> 2.0'
gem 'sdoc', '~> 0.4.0', group: :doc
gem 'angular-rails-templates'
gem 'responders', '~> 2.0'
gem 'angular_rails_csrf'
gem 'devise'

group :development, :test do
  gem 'byebug'
  gem 'web-console', '~> 2.0'
  gem 'spring'
end

和bower.json:

{
  ...
  ],
  "license": "MIT",
  "ignore": [...
  ],
  "dependencies": {
    "angular": "~1.3.15",
    "angular-ui-router": "~0.2.13",
    "bootstrap": "~3.3.4",
    "angular-devise": "~1.0.2"
  }
}

我希望一切都有道理,并为任何明显的新手错误道歉。如果任何其他代码有用,请告诉我。所有人都非常感谢!

先谢谢,史蒂夫。

1 个答案:

答案 0 :(得分:1)

我认为你错过了“要求”这个词。在application.js文件中。它应该是 //= require angular-devise