Heroku Production - ActionView::Template::Error(#<Sprockets::Manifest:number> 的未定义方法“目录”)
Heroku Production - ActionView::Template::Error (undefined method `directory' for #<Sprockets::Manifest:number>)
我们有一个 react-rails 应用程序。不幸的是,该应用程序适用于本地开发,但部署到 heroku 时却不行。当转到我们在应用程序上的默认路径时,我们收到以下错误:
ActionView::Template::Error (undefined method 'directory' for #<Sprockets::Manifest:0x007fef13200aa8>)
我们发现它发生在我们认为的这一行:
<%= react_component('NavBar', {}, {prerender: true}) %>
关于我们应用程序的一些事情:
- 它使用 browserify 来编译我们的 js.jsx。
- 我们在删除 public/assets 文件夹后使用
RAILS_ENV=production bundle exec rake assets:precompile
进行预编译。
- 在本地与
rails s
和 foreman start
一起工作
- 我们正在使用助推链轮。即使删除,我们仍然有这个问题。
这是我们的 npm 依赖项:
"dependencies": {
"browserify": "^10.2.4",
"browserify-incremental": "^1.5.0",
"classnames": "^2.2.3",
"reactify": "^1.1.0"
}
这是我们的 Gemfile
source 'https://rubygems.org'
gem 'rails', '4.2.3'
gem 'rails-api'
gem 'spring', :group => :development
gem 'active_model_serializers', '~> 0.10.0.rc1'
gem 'pg'
gem 'devise'
gem 'puma'
gem 'twitter'
gem 'react-rails', '~> 1.0'
gem 'browserify-rails', '~> 0.9.1'
gem 'bootstrap-sass', '~> 3.2.0'
gem 'sass-rails', '~> 5.0', '>= 5.0.4'
gem 'autoprefixer-rails'
group :test do
gem 'rspec-rails'
gem 'pry'
gem 'faker'
gem 'webmock'
end
group :development, :test do
gem 'factory_girl_rails'
end
group :production do
gem 'uglifier'
gem 'rails_12factor'
gem 'rspec'
end
ruby '2.2.4'
我们将不胜感激。
我 运行 今天就遇到了同样的问题,并遵循了 https://github.com/reactjs/react-rails/issues/443#issuecomment-180544359 中的建议。我仍然 运行 出错,所以现在我修改了我的 heroku 配置(config/environments/staging.rb & config/environments/production.rb)以使用
config.assets.compile = true
目前服务器端渲染工作正常。 react-rails 的人说他们已经完成了一个 pull request 来解决这个问题,但我认为它还没有发布。
可能相关:rake assets:precompile undefined method directory? for nil:NilClass
当 Rails 资产编译器 (Sprockets) 找不到您指定为项目资产位置的目录时,会发生此错误。我的建议是确保您的所有资产都已成功部署到 heroku,然后在您引用项目中的资产以包含在页面中时检查您的路径设置是否正确。
另请参阅 与 React-Rails 具体相关。
在 Whosebug 和 github 问题上搜索数小时的解决方案似乎是删除
//= require react_ujs
来自您的资产文件夹中的 application.js。
react-rails
1.6.0 中存在错误,应该在 1.6.1 中修复
这是补丁:
https://github.com/reactjs/react-rails/pull/478
如果最新版本不适合您,请在 react-rails repo 上提出问题!
我们有一个 react-rails 应用程序。不幸的是,该应用程序适用于本地开发,但部署到 heroku 时却不行。当转到我们在应用程序上的默认路径时,我们收到以下错误:
ActionView::Template::Error (undefined method 'directory' for #<Sprockets::Manifest:0x007fef13200aa8>)
我们发现它发生在我们认为的这一行:
<%= react_component('NavBar', {}, {prerender: true}) %>
关于我们应用程序的一些事情:
- 它使用 browserify 来编译我们的 js.jsx。
- 我们在删除 public/assets 文件夹后使用
RAILS_ENV=production bundle exec rake assets:precompile
进行预编译。 - 在本地与
rails s
和foreman start
一起工作
- 我们正在使用助推链轮。即使删除,我们仍然有这个问题。
这是我们的 npm 依赖项:
"dependencies": {
"browserify": "^10.2.4",
"browserify-incremental": "^1.5.0",
"classnames": "^2.2.3",
"reactify": "^1.1.0"
}
这是我们的 Gemfile
source 'https://rubygems.org'
gem 'rails', '4.2.3'
gem 'rails-api'
gem 'spring', :group => :development
gem 'active_model_serializers', '~> 0.10.0.rc1'
gem 'pg'
gem 'devise'
gem 'puma'
gem 'twitter'
gem 'react-rails', '~> 1.0'
gem 'browserify-rails', '~> 0.9.1'
gem 'bootstrap-sass', '~> 3.2.0'
gem 'sass-rails', '~> 5.0', '>= 5.0.4'
gem 'autoprefixer-rails'
group :test do
gem 'rspec-rails'
gem 'pry'
gem 'faker'
gem 'webmock'
end
group :development, :test do
gem 'factory_girl_rails'
end
group :production do
gem 'uglifier'
gem 'rails_12factor'
gem 'rspec'
end
ruby '2.2.4'
我们将不胜感激。
我 运行 今天就遇到了同样的问题,并遵循了 https://github.com/reactjs/react-rails/issues/443#issuecomment-180544359 中的建议。我仍然 运行 出错,所以现在我修改了我的 heroku 配置(config/environments/staging.rb & config/environments/production.rb)以使用
config.assets.compile = true
目前服务器端渲染工作正常。 react-rails 的人说他们已经完成了一个 pull request 来解决这个问题,但我认为它还没有发布。
可能相关:rake assets:precompile undefined method directory? for nil:NilClass
当 Rails 资产编译器 (Sprockets) 找不到您指定为项目资产位置的目录时,会发生此错误。我的建议是确保您的所有资产都已成功部署到 heroku,然后在您引用项目中的资产以包含在页面中时检查您的路径设置是否正确。
另请参阅
在 Whosebug 和 github 问题上搜索数小时的解决方案似乎是删除
//= require react_ujs
来自您的资产文件夹中的 application.js。
react-rails
1.6.0 中存在错误,应该在 1.6.1 中修复
这是补丁:
https://github.com/reactjs/react-rails/pull/478
如果最新版本不适合您,请在 react-rails repo 上提出问题!