Angularjs和Rails不能用于生产

时间:2014-09-13 00:16:54

标签: ruby-on-rails angularjs production-environment ruby-on-rails-4.1

我收到以下错误,我无法理解原因。我尽力改变/检查错误的起源,但对我来说,一切似乎都是正确的。并且此错误仅发生在productiondevelopment中它可以正常工作。

#error
Uncaught Error: [$injector:modulerr] Failed to instantiate module recipeApp due to:
Error: [$injector:nomod] Module 'recipeApp' 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.

#app.js
var mod = angular.module('recipeApp',[]);

#application.js
//= require jquery
//= require jquery_ujs
//= require pixel-admin.min
//= require app

#config/initializers/productio.rb
config.assets.compile = false
config.assets.precompile =  ['*.js', '*.css']
config.assets.js_compressor = Uglifier.new(:mangle => false)
config.assets.js_compressor = :uglifier


#app/views/layout/application.html.erb
<body class="theme-default no-main-menu main-navbar-fixed" ng-app="recipeApp">

当我通过萤火虫检查来源时,我可以在recipeAppjs

中看到html

我正在使用

  • Rails 4.1.5
  • Angularjs 1.2.13

更新

对于路由我正在使用ui.router,我怎么试图添加它,但仍然是相同的

#app/views/layouts/application.html.erb
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.4/angular.js"></script>
<script src="//angular-ui.github.io/ui-router/release/angular-ui-router.js"></script> 

在我的

app/assets/javascripts/app.js

'use strict';
angular.module('recipeApp',["ui.router"]);

2 个答案:

答案 0 :(得分:6)

我也遇到了这个问题并在此处找到了解决方案:https://teamgaslight.com/blog/4-lessons-learned-doing-angular-on-rails。我认为即使这个问题已经相当陈旧,也会遇到遇到这个问题的人。

生产中的Rails会自动缩小混乱的变量。

所以在config / environments / production.rb中,在end

之前添加这一行
 config.assets.js_compressor = Uglifier.new(mangle: false)

您的应用需要使用Rails 4 +

答案 1 :(得分:0)

未捕获错误:[$ injector:modulerr]如果在较新版本的angular中未提供ngRoute依赖项,则会发生此错误。

您必须在模块中提供ngRoute依赖项,因为它是新角度版本中的独立模块。

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.13/angular-route.min.js"></script>

var app = angular.module('recipeApp', ['ngRoute']);