ExecJS ve bir JavaScript çalışma zamanı bulamadı


403

Ben kullanmaya çalışıyorum Mongoid / Devise Raylar 3.1 şablonu ( Mongoid ve Devise ) ve ben belirten bir hata almaya devam ExecJS bir JavaScript çalışma zamanını bulamıyor. Yüklü olmadığımda yeterince adil, ama Node.js , Mustang ve Ruby Racer'ı yüklemeyi denedim , ancak hiçbir şey çalışmıyor.

Bir JavaScript çalışma zamanı bulamadım. Kullanılabilir çalışma zamanlarının ( ) listesi için bkz. Sstephenson / ExecJS (GitHub ExecJS::RuntimeUnavailable).

Bunun çalışması için ne yapmam gerekiyor?


4
btw - Ubuntu karmik kullanıyorum.
srboisvert

Cevabı gerçekten değiştirmeyi düşünmelisiniz. Node.js yanıtı neredeyse execjs / rubyracer kadar iyi değil.
Sean Dunford

3
Ruby'nin onunla ilgili başka sorunları var. Heroku, bundan kaçınabilmeniz için artık Gemfile'nize eklenmesini önermez. devcenter.heroku.com/articles/rails-asset-pipeline#therubyracer Ubuntu'ya uygun bir Javascript çalışma zamanı kurmanın bu sorunun doğru cevabı olduğunu düşünüyorum.
M. Scott Ford

Yanıtlar:


436

Ubuntu Kullanıcıları

Ubuntu 11.04 kullanıyorum ve benzer sorunları vardı. Node.js'yi yüklemek sorunu çözdü .

Ubuntu 13.04 x64'ten itibaren sadece çalıştırmanız gerekir:

sudo apt-get install nodejs

Bu sorunu çözecektir.


CentOS / RedHat Kullanıcıları

sudo yum install nodejs

1
denedim. şanssız. Acaba bu bir rvm çatışması falan mı? Diğer insanların önerdiği her şey benim için çalışmadı.
srboisvert

76
gem 'execjs' gem 'therubyracer' bu daha iyi bir çözümdür.
dwaynemac

26
Heroku, bellek kullanımı nedeniyle artık nemlendiriciyi şiddetle tavsiye etmiyor. Bu cevap başına dev makineme nodejs kurdum ve gemfile'mdan therubyracer'ı çıkardım. Ayrıca bkz . Stackoverflow.com/questions/7092107/… .
Mark Berry

11
@dwaynemac Katılıyorum. Çalışma zamanı bağımlılık listesine başka bir mücevher eklemek yerine, bir işletim sistemi kitaplığı (varsayılan olarak Mac ve Windows gibi) olarak var olmayı tercih ederim.
William Denniss

1
Gözden geçiren başka bir şey olmadığı sürece, therubyracer ve execjs'ın heroku dağıtımıyla ilgili sorunlara neden olduğu anlaşılıyor. Bu tercih edilen çözümdür.
Sturm

445

Gem dosyanıza ExecJS ve Ruby Racer'ı ekleyin ve bundle installsonra çalıştırın .

gem 'execjs'

gem 'therubyracer'

Sonra her şey yolunda olmalı.


6
Bu benim için çalıştı, raylar 3.1rc4 ve Ubuntu 11.04 (raylar 3.1 ile ilk denemem). Hatayı aldığımda bir iskele oluşturmaya çalışıyordum. Raylar 3.1 hala hala topal "kırık".
wonderfulthunk

35
Rails 3.1 RC 6 için, sadece belirtmeniz gerekirgem 'therubyracer'
Amree

5
Yeni bir uygulama oluşturulduğunda bu mücevherlerin varsayılan Gemfile'a dahil edilmesi yine de var mı?
Richard Fawcett

2
bu node.js yüklemekten daha iyi bir çözümdür. Uzak bir sunucuya dağıtıyorsanız veya uygulamayı diğer geliştiricilerle paylaşıyorsanız, herkesin node.js'yi yüklemesi, paket yüklemesini çalıştırmaktan çok daha acı vericidir.
jdkealy

19
Heroku, bellek kullanımı nedeniyle artık nemlendiriciyi şiddetle tavsiye etmiyor. Dev makineme nodejs ( github.com/joyent/node/wiki/… ) yükledim ve yeniden dosyalayıcıyı gemfile'ımdan çıkardım. Ayrıca bkz . Stackoverflow.com/questions/7092107/… .
Mark Berry

77

Gem dosyanıza yazın

gem 'execjs'
gem 'therubyracer'

ve sonra koş

bundle install

Her şey benim için iyi çalışıyor :)


9
'Execjs' eklemenize gerek yok
miguelSantirso

Evet sağ sağ raylar 3.2.1 sadece gem'therubyracer 'kullanmak zorunda
manish nautiyal

Teşekkürler @manish nautiyal ve @ Peter Mortensen. benim için çalışıyor
Ravindra

48

Benzer bir sorunum vardı: Rails 3.1 uygulamam Windows'da iyi çalıştı, ancak Linux'ta çalışırken OP ile aynı hatayı aldı. Her iki platformda da benim için çalışan düzeltme, aşağıdakilere eklemekti Gemfile:

gem 'therubyracer', :platforms => :ruby

Hile :platforms => :rubyaslında bu gem sadece "C Ruby (MRI) veya Rubinius, ancak Windows DEĞİL" ile kullanmak anlamına gelir .

Diğer olası değerler :platformsaçıklanmıştır adam sayfası .bundler

Bilginize: Windows yerleşik bir JavaScript motoruna sahiptir execjs. Linux'ta bir yerleşik yoktur, ancak birisinin kurabileceği birkaç tane vardır. therubyracerOnlardan biri. Diğerleri execjs README.md'de listelenir .


Teşekkürler, bu benim için Ubuntu Oneiric üzerinde ruby ​​1.9.3 ve Rails 3.2.1 rvm kurulumunu kullanarak düzeltti
Yashima

Çok teşekkür ederim efendim!
DaTroop

Node.js yüklü bir CentOS sunucusunda hatayla karşılaştım. Bu beni aştı. Teşekkürler!
ncherro

36

Gemfile'ma aşağıdaki taşı eklemek sorunu çözdü:

gem 'therubyracer'

Ardından yeni bağımlılıklarınızı toplayın:

$ bundle install

Ayrıca Gemfile gem gem 'execjs' ekleyin
Bijendra

6
execjs zaten raylar tarafından dahil edilmiştir. Sadece serbest bırakma adayları için de gerekliydi.
JDutil

16

Alternatif bir yol, sahip olmadığınız şeyleri içeren mücevher grubu olmadan paketlemektir.

Öyleyse yap:

bundle install --without assets

Gemfile'ı değiştirmek zorunda değilsiniz, elbette varlık zinciri işlerini yapmamanız koşuluyla - genellikle geliştirme dışı ortamlarda geçerlidir. Paket .bundle / config dosyasındaki '--without' ayarınızı hatırlar.


En iyi cevap. Raylar sürüm 3.2.3 için çalıştı
Frantzdy Romain

1
Bu harika ve böyle basit bir düzeltme. Heroku sitesi RubyRacer'ın artık gerekli olmadığını söylüyor (Cedar yığını ile), bu yüzden aniden programımın yerel olarak neden çalışmadığı konusunda şaşkındım. Bu hile yaptı.
Mike Blyth

6

Mücevher dosyanıza aşağıdaki taşları ekleyin

gem 'therubyracer'
gem 'execjs'

ve koş

bundle install

bitirdiniz :)


6

Amazon Linux (AMI) için:

sudo yum install nodejs npm --enablerepo=epel

1
Teşekkürler, bu daha yüksek bir seviyede olmalı
David Mauricio

Bu, AWS standart linux dağıtımında çalışmak için bir capistrano konuşlandırması almak için gerekliydi.
jjk


4

Aynı hatayla karşılaştım, ancak üretim ortamımda değil yalnızca hazırlama sunucumda. nodejs zaten her iki ortama da kurulmuştu.

Yazarak:

which node

Düğüm komutunun üretimde: / usr / bin / node'da bulunduğunu, ancak / usr / local / bin / node in staging'de olduğunu öğrendim.

Hazırlamada bir sembolik bağlantı oluşturduktan sonra:

sudo ln -s /usr/local/bin/node /usr/bin/node

uygulama daha sonra evrelemede çalıştı.

Muss yok, karışıklık yok.


çekicilik gibi çalışır! Bir tavsiye: Ben nodejsde symlink yapmak gerekiyor
Rafael Gomes Francisco

3

Bellekte kötü olduğu için RubyRacer kullanmayın. Burada bazı insanlar tarafından önerilen Node.js'yi yüklemek daha iyi bir fikirdir.

ExecJs Kütüphanesi tarafından kullanılabilen bu çalışma zamanları listesi, Node.js kullanımını da belgelemektedir

https://github.com/sstephenson/execjs

Bu nedenle Node.js, RubyRacer'ı kullanmaktan çok aşırı ve daha iyi bir çözüm değildir.



0

Ruby 1.9.3 ile rbenv kullanmaya başladığımda bu problemi almaya başladım; burada sistem yakutum 1.8.7. Gem her iki yerde de yüklü ama nedense raylar komut dosyası onu almadım. Ama "execjs" ve "therubyracer" Gemfile eklemek hile yaptı.


0

Gem dosyanızda Bu satırı uncomment.

19 # mücevher 'therubyracer', platformlar:: yakut

Ve paket yüklemeyi çalıştırın

Çalışmaya hazırsınız. :)


0

Ubuntu 18.04, Ruby 2.6. *, Rails 5 ve RubyMine 2019.1.1 kullanarak RubyMine'de hata ayıklamaya çalışarak aynı sorunla karşılaştım.

Sorunu çözmek için satırımı uncommented mini_racerbenim Gemfileve sonra koştu bundle:

# See https://github.com/rails/execjs#readme for more supported runtimes
# gem 'mini_racer', platforms: :ruby

Değişmek:

# See https://github.com/rails/execjs#readme for more supported runtimes
gem 'mini_racer', platforms: :ruby

0

Ben yüklü nodearacılığıyla NVM'de ve Capistrano'nun ile dağıtırken bu sorunu ile karşılaştı. Etkileşimli olmayan bir şekilde çalıştığı için Capistrano otomatik olarak nvm yüklemedi.

Düzeltmek için, nvm'nin eklediği satırları ~/.bashrcen üste taşıyın . Dosya daha sonra şöyle görünecektir:

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion

# If not running interactively, don't do anything
case $- in
    *i*) ;;
      *) return;;
esac
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.