2013-03-20 158 views
4

我創建了一個新的Rails應用程序。當我嘗試啓動服務器時,出現以下錯誤:當我啓動Rails服務器時出現ExecJS :: RuntimeUnavailable錯誤

[[email protected] samp]$ rails server 
/home/bathakarai/.rvm/gems/ruby-2.0.0-p0/gems/railties-3.2.13/lib/rails/script_rails_loader.rb:11: warning: Insecure world writable dir /usr in PATH, mode 040777 
/home/bathakarai/.rvm/gems/ruby-2.0.0-p0/gems/bundler-1.3.4/lib/bundler/runtime.rb:216: warning: Insecure world writable dir /usr in PATH, mode 040777 
/home/bathakarai/.rvm/gems/ruby-2.0.0-p0/gems/execjs-1.4.0/lib/execjs/runtimes.rb:51:in `autodetect': Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of available runtimes. (ExecJS::RuntimeUnavailable) 
    from /home/bathakarai/.rvm/gems/ruby-2.0.0-p0/gems/execjs-1.4.0/lib/execjs.rb:5:in `<module:ExecJS>' 
    from /home/bathakarai/.rvm/gems/ruby-2.0.0-p0/gems/execjs-1.4.0/lib/execjs.rb:4:in `<top (required)>' 
    from /home/bathakarai/.rvm/gems/ruby-2.0.0-p0/gems/coffee-script-2.2.0/lib/coffee_script.rb:1:in `require' 
    from /home/bathakarai/.rvm/gems/ruby-2.0.0-p0/gems/coffee-script-2.2.0/lib/coffee_script.rb:1:in `<top (required)>' 
    from /home/bathakarai/.rvm/gems/ruby-2.0.0-p0/gems/coffee-script-2.2.0/lib/coffee-script.rb:1:in `require' 
    from /home/bathakarai/.rvm/gems/ruby-2.0.0-p0/gems/coffee-script-2.2.0/lib/coffee-script.rb:1:in `<top (required)>' 
    from /home/bathakarai/.rvm/gems/ruby-2.0.0-p0/gems/coffee-rails-3.2.2/lib/coffee-rails.rb:1:in `require' 
    from /home/bathakarai/.rvm/gems/ruby-2.0.0-p0/gems/coffee-rails-3.2.2/lib/coffee-rails.rb:1:in `<top (required)>' 
    from /home/bathakarai/.rvm/gems/ruby-2.0.0-p0/gems/bundler-1.3.4/lib/bundler/runtime.rb:72:in `require' 
    from /home/bathakarai/.rvm/gems/ruby-2.0.0-p0/gems/bundler-1.3.4/lib/bundler/runtime.rb:72:in `block (2 levels) in require' 
    from /home/bathakarai/.rvm/gems/ruby-2.0.0-p0/gems/bundler-1.3.4/lib/bundler/runtime.rb:70:in `each' 
    from /home/bathakarai/.rvm/gems/ruby-2.0.0-p0/gems/bundler-1.3.4/lib/bundler/runtime.rb:70:in `block in require' 
    from /home/bathakarai/.rvm/gems/ruby-2.0.0-p0/gems/bundler-1.3.4/lib/bundler/runtime.rb:59:in `each' 
    from /home/bathakarai/.rvm/gems/ruby-2.0.0-p0/gems/bundler-1.3.4/lib/bundler/runtime.rb:59:in `require' 
    from /home/bathakarai/.rvm/gems/ruby-2.0.0-p0/gems/bundler-1.3.4/lib/bundler.rb:132:in `require' 
    from /home/bathakarai/gold/Ruby/Practice/Rails/samp/config/application.rb:7:in `<top (required)>' 
    from /home/bathakarai/.rvm/gems/ruby-2.0.0-p0/gems/railties-3.2.13/lib/rails/commands.rb:53:in `require' 
    from /home/bathakarai/.rvm/gems/ruby-2.0.0-p0/gems/railties-3.2.13/lib/rails/commands.rb:53:in `block in <top (required)>' 
    from /home/bathakarai/.rvm/gems/ruby-2.0.0-p0/gems/railties-3.2.13/lib/rails/commands.rb:50:in `tap' 
    from /home/bathakarai/.rvm/gems/ruby-2.0.0-p0/gems/railties-3.2.13/lib/rails/commands.rb:50:in `<top (required)>' 
    from script/rails:6:in `require' 
    from script/rails:6:in `<main>' 

如何解決此錯誤?

回答

3

嘗試

sudo gem install therubyracer 

gem install therubyracer 

希望這有助於

+1

安裝therubyracer gem後,運行bundle或bundle install命令。一旦成功安裝,在項目 – Bathakarai 2013-03-20 04:54:38

+0

內的Gemfile中添加「gem'therubyracer'」行,但如果我不使用coffee-script並且不想執行execjs,該怎麼辦?鏈輪依賴於execjs,但是導軌4需要鏈輪嗎?我可以在execjs上插拔插件嗎? – Ziggy 2013-08-08 17:29:49

+0

偉大的解決方案@Bathakarai! [這裏](https://gist.github.com/lucio-martinez/23110e3618c1bac7f641)是快速解決它的一個片段:-) – Lucio 2014-09-28 04:17:33

9

如果您剛剛生成了一個新應用程序,當gem therubyracer被註釋時,可能會出現此應用程序。需要編譯您的資產。您可以取消註釋或安裝nodejs之類的東西,這樣您就不需要在所有項目中使用該寶石。

brew install nodejs 
# or 
sudo apt-get install nodejs 
+0

對於安裝nodejs這兩個表揚都不起作用@jvnill – Bathakarai 2013-03-20 04:23:57

+0

你可能正在使用Windows? – jvnill 2013-03-20 04:26:12

1

最流行的JavaScript運行時therubyracer這是一個寶石。作爲@muttonlambsaid,安裝運行:

gem install therubyracer 

然後,Bathakaraimentioned,下一行添加到您的Gemfile在文件的底部:

gem 'therubyracer' 

現在運行rails server再次,一切都應該工作。

爲了簡化過程,您可以運行a script來生成應用程序並自動添加JS運行時。