1

我们有一个 react-rails 应用程序。不幸的是,该应用程序适用于本地开发,但在部署到 heroku 时不能。在应用程序上转到我们的默认路径时,我们收到以下错误: ActionView::Template::Error (undefined method 'directory' for #<Sprockets::Manifest:0x007fef13200aa8>)

在我们看来,我们已经发现它发生在这一行: <%= react_component('NavBar', {}, {prerender: true}) %>

关于我们的应用程序的一些事情:

  • 它使用 browserify 来编译我们的 js.jsx。
  • 我们RAILS_ENV=production bundle exec rake assets:precompile在删除 public/assets 文件夹后使用预编译。
  • 在本地与两者一起rails s工作foreman start
  • 我们正在使用 boostrap 链轮。即使删除,我们仍然有这个问题。

这是我们的 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'

我们将不胜感激。

4

4 回答 4

0

我今天遇到了同样的问题,并遵循了以下建议: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 来解决这个问题,但我认为它还没有发布。

于 2016-03-01T21:23:14.900 回答
0

潜在相关:rake assets:precompile undefined method directory?对于零:NilClass

这是当 Rails 资产编译器 (Sprockets) 找不到您指定为项目资产位置的目录时发生的错误。我的建议是确保您的所有资产都已成功部署到 heroku,然后在您引用项目中的资产以包含在页面中时检查您的路径是否设置正确。

另请参阅Eric C关于 React-Rails 的回答。

于 2016-03-01T21:57:47.347 回答
0

在 StackOverflow 和 github 问题上搜索数小时的解决方案似乎是删除

//= require react_ujs

从您的资产文件夹中的 application.js 中。

于 2016-03-01T23:43:30.580 回答
0

1.6.0 中有一个错误react-rails,应该在 1.6.1 中修复

这是补丁:

https://github.com/reactjs/react-rails/pull/478

如果最新版本不适合您,请在 react-rails repo 上打开一个问题!

于 2016-03-09T20:32:30.747 回答