execJs: 'JavaScript çalışma zamanı bulunamadı' ancak execjs AND therubyracer Gemfile'de


191

Bu hatayı alıyorum:

komisyon iptal edildi! Bir JavaScript çalışma zamanı bulunamadı. Bkz. Https://github.com/sstephenson/execjs ,

Zaten google arama daha fazla zaman geçirdim sonra itiraf etmek istiyorum. Bunun bir execJs hatası olduğuna inanıyorum.

Tüm gönderilerden, bu raylar 3.1 ile çok yaygın bir konudur. Bir js çalışma zamanı, şimdi kahve komut dosyası ve sass gibi standart mücevherler için gereklidir.

Bu vakaların çoğu, uygulama Gemfile'a 'execjs' ve 'therubyracer' eklenerek ve daha sonra 'paket güncellemesi' ve / veya 'paket kurulumu' çalıştırılarak çözüldü. Ama benim için değil.

Sanırım şanslıyım. Redhat Linux 4'ün (2.6.9-101.ELsmp) eski bir sürümünde 3.1.3 / ruby ​​1.9 rayları çalıştırıyorum ve gcc 3.4.6.

Bildirilen diğer düzeltmeler yardımcı olmaz, 'nodejs', 'johnson' veya 'mustang' yükleyemiyorum, diğer çalışma zamanlarının execJ'lerinin yerini belirlemesi ve kullanması gerekiyor. Onlar sistemime kurmaz / kurmazlar.

Ben execJs 'therubyracer' bulmak başarısız neden sorunu düzeltmek gerekiyor. İşte Gemfile (ve paket kurulumu Tamam diyor):

source 'http://rubygems.org'

gem 'rails', '3.1.3'
gem 'sqlite3'
gem 'sho-mongrel'

gem 'execjs'
gem 'therubyracer'
#gem "therubyracer", :require => 'v8'

group :assets do
  gem 'sass-rails',   '~> 3.1.5'
  gem 'coffee-rails', '~> 3.1.1'
  gem 'uglifier', '>= 1.0.3'
end

Ve işte bir iz:

~/rails/316-private-pub/chatter-after>rake db:create --trace
rake aborted!
Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of available runtimes.
/usr/local/lib/ruby/gems/1.9.1/gems/execjs-1.3.0/lib/execjs/runtimes.rb:50:in `autodetect'
/usr/local/lib/ruby/gems/1.9.1/gems/execjs-1.3.0/lib/execjs.rb:5:in `<module:ExecJS>'
/usr/local/lib/ruby/gems/1.9.1/gems/execjs-1.3.0/lib/execjs.rb:4:in `<top (required)>'
/usr/local/lib/ruby/gems/1.9.1/gems/bundler-1.0.21/lib/bundler/runtime.rb:68:in `require'
/usr/local/lib/ruby/gems/1.9.1/gems/bundler-1.0.21/lib/bundler/runtime.rb:68:in `block (2 levels) in require'
/usr/local/lib/ruby/gems/1.9.1/gems/bundler-1.0.21/lib/bundler/runtime.rb:66:in `each'
/usr/local/lib/ruby/gems/1.9.1/gems/bundler-1.0.21/lib/bundler/runtime.rb:66:in `block in require'
/usr/local/lib/ruby/gems/1.9.1/gems/bundler-1.0.21/lib/bundler/runtime.rb:55:in `each'
/usr/local/lib/ruby/gems/1.9.1/gems/bundler-1.0.21/lib/bundler/runtime.rb:55:in `require'
/usr/local/lib/ruby/gems/1.9.1/gems/bundler-1.0.21/lib/bundler.rb:122:in `require'
/home/vitalarthur/rails/316-private-pub/chatter-after/config/application.rb:7:in `<top (required)>'
/usr/local/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
/usr/local/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
/home/vitalarthur/rails/316-private-pub/chatter-after/Rakefile:5:in `<top (required)>'
/usr/local/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/rake_module.rb:25:in `load'
/usr/local/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/rake_module.rb:25:in `load_rakefile'
/usr/local/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:501:in `raw_load_rakefile'
/usr/local/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:82:in `block in load_rakefile'
/usr/local/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling'
/usr/local/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:81:in `load_rakefile'
/usr/local/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:65:in `block in run'
/usr/local/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling'
/usr/local/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:63:in `run'
/usr/local/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/bin/rake:33:in `<top (required)>'
/usr/local/bin/rake:19:in `load'
/usr/local/bin/rake:19:in `<main>'

Geliştirme günlüğünde ilginç bir şey yok.

İşte execjs dir:

/usr/local/lib/ruby/gems/1.9.1/gems/execjs-1.3.0/lib/execjs>ls
disabled_runtime.rb  module.rb              ruby_rhino_runtime.rb  version.rb
external_runtime.rb  mustang_runtime.rb     runtimes.rb
johnson_runtime.rb   ruby_racer_runtime.rb  

Ben de execjs-1.2.13 denedim. Aynı sorun.

Aşağıda execjs.rb yorum yaparsam, hatasız komisyon çalıştırabilirsiniz:

require "execjs/module"
require "execjs/runtimes"

module ExecJS
  self.runtime #||= Runtimes.autodetect
end

Ama sonra çalışma zamanı almıyorum.

Hata metninin runtimes.rb dosyasından nereden geldiğini görebilirim:

def self.autodetect
  from_environment || best_available ||
    raise(RuntimeUnavailable, "Could not find a JavaScript runtime. " +
      "See https://github.com/sstephenson/execjs for a list of available runtimes.")
end

Yani soru, 'therubyracer' yüklü olduğu için neden runtimes.rb dosyasını bulamıyorum? ExecJ'ler bozuk mu?

İşte 'therubyracer':

/usr/local/lib/ruby/gems/1.9.1/gems/therubyracer-0.9.9

Bunu nasıl düzeltebilirim?

Yanıtlar:


346

Ubuntu Kullanıcıları:

Aynı sorunu vardı nodejsve gem bağımsız sistemime yükleyerek düzeltildi .

Ubuntu üzerinde: sudo apt-get install nodejs

64bit ubuntu 11.10 kullanıyorum

Güncelleme: @Galina'nın cevabından nodejs'ün en son sürümünün gerekli olduğunu tahmin ediyorum, bu yüzden @ steve98177 redhat (veya CentOS) kutusundaki en iyi seçeneğiniz @Galina'nın yaptığı gibi kaynak kodundan yüklemektir. Bu kutuya "yapamaz / kuramaz"? Bir fedora rpm (uzun atış) kurmayı denemenizi öneririm https://github.com/joyent/node/wiki/Installing-Node.js-via-package- yöneticisi veya başka bir RH / CentOs kutusu bulun (ki 'yapabilirsiniz') ve kendi rpm'nizi oluşturun ve orijinal RH kutusuna yükleyin (RH'deki eski glibc güzel oynarsa).

Buradaki asıl sorun (IMHO), yakut ortamın dışında kurulu paketlere bağımlı olan Mücevherleri kuruyor, yüklemeden önce bilmenin bir yolu var mı? veya paketçi için bir RFI?


CentOS / RedHat Kullanıcıları:

sudo yum install nodejs

1
ubuntu üzerinde sudo apt-get güncelleme ve sonra nodejs yüklemek çalıştı.
Vineet Bhatia

Aynı problemi Ubuntu 12.04-32 bit üzerinde yakut 1.9.3p392, raylar 3.2.3, mücevher 1.8.25 ile yaşadım. "Script / rails console" ve "script / rails server" çalışırken aynı hatayı alıyordum. sudo apt-get install nodejssorunumu çözdü.
ajin6747

Yine de Düğüm olmak zorunda mı? Therubyracer, therubyrhino veya Apple JavaScriptCore gibi diğerlerini kullanabileceğinizden eminim. ExecJS'in onları desteklediğini biliyorum. github.com/sstephenson/execjs
Dustin Griffith

Mücevherler tarafından desteklenen alternatif çalışma zamanlarından herhangi birini yüklemeye çalışmak beni hiçbir yere götürmedi. gerçekten, nodejs kurmak işe yaradı. İdeal olmaktan uzak, ancak gönderiyi geçmenizi sağlar.
Mitch Kent

Ubuntu 14.04 kullanıyorum. Yükleme nodejs sonra sorun çözüldü.
Charles Wu

108

Gemfile'nize ekleyin:

gem 'execjs'
gem 'therubyracer', :platforms => :ruby

Daha fazla ayrıntı için: ExecJS ve bir JavaScript çalışma zamanı bulamadı


1
Teşekkürler, ama bu işe yaramıyor. Bu girişim bak rubyrhino execjs tarafından tanınan almak: /usr/local/lib/ruby/gems/1.9.1/gems/therubyrhino-1.73.1/lib/rhino.rb rhino mücevher
steve98177

Benim için de çalıştı, benim gibi ray yeni başlayanlar için bir not: Gemfile proje klasöründe.
McSas

1
Bunun işe yaramadığı kişiler için: gem install therubyracerÖnce koşmayı deneyin .
maksimov

Bu sorunu yaşayan herkese Shopify'ın şık projesini bir CentOS 5.8 sistemine yükledim ve execjs çalışma zamanı sorunuyla karşılaşıyordum. Bunu kendime ekledim Gemfileve işe yaradı.
Casey

Tamam çalışıyor, iyi. Ama neden bunu yapmak zorundayız? Gemfile'ım için her satır eklediğimde, kişisel projeler ve takım projeleri için gerçekten mantıklı olmalı, çünkü bu konu çevreye özgüyken başkalarının makinelerini etkilediğinden bunu yapmak daha da zor. IMHO bu uzun vadede pek de iyi bir çözüm değil.
Augustin Riedinger


13

Boş bir proje oluşturduğunuzda, bu satır Gemfile içinde yorumlanır. Sadece uncomment ve paket!

gem 'therubyracer', :platforms => :ruby

2
... ve bir demet! Bu, en kolay cevap.
etusm


4

Ruby 1.9.3p194, raylar 3.2.3, mücevher 1.8.24 ile Ubuntu 11.10- 32 bit kullanıyorum. "Script / rails console" çalıştırılırken aynı Javascript hatası alıyordu.

Ancak "sudo apt-get install nodejs" yapmak sorunumu çözdü.


4

Fedora kullanıcıları, bu paketin Fedora depolarında bile bulunmasını engelleyen ciddi adlandırma ve dosya yerleştirme çakışmaları nedeniyle basit bir "yum install nodejs" YAPAMAZ.

Görünüşe göre, işe yarayabilecek alternatif bir yapıya sahip en az bir alternatif depo var, ama bu onu kullanmaya istekli olmam için çok fazla "alternatif" - Başka bir alternatif arıyorum.


Bu, o zamanlar doğru olabilir, ancak şimdi iyi çalışıyor (Aralık 2015)
Mitch Kent


4

Ubuntu'da olsaydın $ sudo apt-get install nodejs

Geliştirme için Windows gibi başka bir sistem kullanmaya çalışmayın. Dünyadaki hemen hemen tüm sunucuların Linux sunucuları olduğunu düşünün, bu yüzden bu uygulamayı dağıtmaya çalıştığınızda bunu bir Linux veya Unix ortamında da geliştirmeniz daha kolay olacaktır.


3

Bir hazırlama sunucusunda aynı sorunu vardı. Yerel geliştirme makinemde komisyon görevleri çalıştırırken herhangi bir sorun yaşamadım, ancak varlıkları çalıştırmaya çalışırken hazırlama sunucusuna konuşlandırma "JavaScript çalışma zamanı bulunamadı" hata iletisiyle başarısız oldu : önceden derleme komisyon görevi.

Tabii ki, therubyracer ve execjs Gemfile'mdaydı ve en son sürümleri kullanıyordum. Gemfile.lock dosyalarım eşleşti ve paket şovunu çalıştırarak sürümleri doğruladım .

Google'da arama yaptıktan sonra, tüm mücevherlerimi sildim ve sorunu gideren bunları yeniden yükledim . Hala temel nedenin ne olduğunu bilmiyorum, ama belki bu sana yardımcı olacaktır.

Ortamım şöyle görünüyor, BTW:

Ubuntu 10.04.3 LTS
rbenv
Ruby 1.9.2-p290
bundler-1.0.21
execjs-1.3.0
therubyracer-0.9.9

Bu sorunu Ubuntu 10.04'te yaşıyorum. Ubuntu 12.04 ile gitmeye değer olduğunu düşünmüyordu, ama sanırım öyle! Yani, benim durumumda, yakutumu (1.9.3, 1.9.2) çok kez derlemem ve yeniden derlemem. Bunu düzeltip düzeltmediğini görmek için tekrar derliyorum. Oh ve ben apt-get en son yükseltme.
Victor Pudeyev

3

Ben de aynı problemi yaşadım. Mücevherleri 'execjs' ve 'therubyracer' eklemek benim için çalışmıyor. apt-get install nodejs - ayrıca çalışmaz. 64bit ubuntu 10.04 kullanıyorum.

Ama bana yardımcı oldu: 1. Boş bir klasör oluşturdum (örneğin "java"). 2. Oluşturduğum klasördeki terminalden şunları yaparım:

$ git clone git://github.com/ry/node.git
$ cd node
$ ./configure
$ make
$ sudo make install

Bundan sonra her zamanki gibi "paket yükleme" çalıştırıyorum (ruby & rails projesi ile klasörden). Ve sorun çözüldü. Ruby'nin yeniden yüklemesine gerek yoktu.


şimdi bunu deneyen herkes bir hata alır. lütfen git clone takip etmeyi
Yeasin Ar Rahman

2

Bu benim Windows makinemde meydana geldi, sorunun oldukça farklı olduğu ortaya çıktı. %PATH%Değişkenimden bazı yolları yanlışlıkla kaldırmıştım . Sadece komut istemini yeniden başlatmak sorunu çözdü. Bu eksik yollardan birinde bir JS çalışma zamanı varmış gibi görünüyor.


ben de benim windows makine bazı yol kaldırıldı olur u nasıl js yolu ekledi bahsetti
Hussain Akhtar Wahid 'Ghouri'

@HussainAkhtarWahid, autoexec'imin veya bunun gibi bir şeyin üzerine yazmadım, bu yüzden tek yapmam gereken cmd oturumumu kapatıp yeniden açmaktı.
Godwin

Aferin efendim, bu Windows yakut geliştirme ortamı için gereken her şeyi kurmaya çalıştıktan sonra benim
sorunumdu

2

Birkaç kez bu hatayla saçımı çıkardım. Apache / Nginx'i yeniden başlatarak bazen kaybolmayı başardım.

Bu yüzden GEM dosyasına aşağıdakileri ekleyerek yukarıdakiyle aynı şekilde düzelttim:

gem 'execjs'
gem 'therubyracer', :platforms => :ruby

ve sonra benim gemfile.lock dosya sildi ve sonra "paket yükleme" yeniden. Ben sadece o zaman "paket yükleme" aslında doğru kütüphaneler vb kurmak buldum.


1

Ubuntu'da, zorunda kaldım sudo apt-get updateve sonra nodejs kurulumu çalıştı.


1

Ben raylar g denetleyicisi oluşturmak zaman ben aynı hatayı aldım. Bundan sonra Gemfile'de (raylar 4'te) aşağıdaki değişiklikler ne zaman yapılırsa, her şey düzgün gitti.

gem 'execjs'
gem 'therubyracer', "0.11.4"
Bundan sonra sunucuyu çalıştırabilir ve uygulamadaki tüm temel işlemleri yapabilir.


0

oluşturduğunuz klasörde bulunan gemfile'ınızı ekleyin: gem 'execjs' gem 'therubyracer'


0

Benim durumumda bundlekomutu çalıştırmak hile yaptı. O zaman birbirlerini bulduklarına güveniyorum.


0

RubyMine (6.3.3) kullanırken bu sorunu yaşadım. Bir gün kodumu çalıştırmayı denedim, ancak işe yaramadı ve JavaScript çalışma zamanı bulunmadığından şikayet etti. rails sYine de koşabildim . Benim için düzeltme yeni bir Çalıştırma yapılandırması oluşturuyordu. Run yapılandırmasının bozulacağı gerçekten tuhaf görünüyor.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.