skip to Main Content

We have a react-rails app. Unfortunately, the app works on local development but not when deployed to heroku. When going to our default path on the app, we get the following error:
ActionView::Template::Error (undefined method 'directory' for #<Sprockets::Manifest:0x007fef13200aa8>)

We’ve figured out that it happens at this line in our view:
<%= react_component('NavBar', {}, {prerender: true}) %>

A few things about our app:

  • It uses browserify to compile our js.jsx.
  • We precompile using RAILS_ENV=production bundle exec rake assets:precompile after deleting the public/assets folder.
  • Works locally with both rails s and foreman start
  • We are using boostrap-sprockets. Even when removed, we still have this issue.

Here is our npm dependencies:

"dependencies": {
   "browserify": "^10.2.4",
   "browserify-incremental": "^1.5.0",
   "classnames": "^2.2.3",
   "reactify": "^1.1.0"
}

Here is our 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'

We would appreciate all help.

4

Answers


  1. I ran into this same issue just today and followed the suggestions in: https://github.com/reactjs/react-rails/issues/443#issuecomment-180544359. I was still running into an error so for now I modified my heroku configurations (config/environments/staging.rb & config/environments/production.rb) to use

    config.assets.compile = true
    

    for now and server-side rendering worked fine. The react-rails folks said they have a pull request completed to fix this issue but I dont think it has been released yet.

    Login or Signup to reply.
  2. Potentially relevant: rake assets:precompile undefined method directory? for nil:NilClass

    This is an error that occurs when the Rails asset compiler (Sprockets) cannot find a directory that you’ve specified as the location of an asset for your project. My suggestion is to make sure that all your assets are being successfully deployed to heroku, and then check that your paths are set up correctly when you reference assets in your project for inclusion in a page.

    Also see Eric C’s answer pertaining to React-Rails specifically.

    Login or Signup to reply.
  3. The solution from hours of searching on StackOverflow and github issues seems to be to remove

    //= require react_ujs
    

    from your application.js in your assets folder.

    Login or Signup to reply.
  4. There was a bug in react-rails 1.6.0 which should be fixed in 1.6.1

    Here’s the patch:

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

    If the latest version doesn’t work for you, please open an issue on the react-rails repo!

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search