ExecJS dan tidak dapat menemukan runtime JavaScript

403

Saya mencoba untuk menggunakan Mongoid / Rancangan Rails 3.1 Template ( Mongoid dan Rancangan ), dan saya terus mendapatkan kesalahan yang menyatakan ExecJS tidak dapat menemukan runtime JavaScript. Cukup adil ketika saya tidak menginstalnya, tetapi saya sudah mencoba menginstal Node.js , Mustang dan Ruby Racer , tetapi tidak ada yang berhasil.

Saya tidak dapat menemukan runtime JavaScript. Lihat sstephenson / ExecJS (GitHub) untuk daftar runtime yang tersedia ( ExecJS::RuntimeUnavailable).

Apa yang harus saya lakukan agar ini berfungsi?

srboisvert
sumber
4
btw - Saya menggunakan ubuntu karmic.
srboisvert
Anda harus benar-benar mempertimbangkan untuk mengubah jawabannya. Jawaban Node.js tidak sebagus eksekutif / rubyracer.
Sean Dunford
3
Rubyracer memiliki masalah lain dengannya. Heroku tidak lagi merekomendasikan untuk memasukkannya ke dalam Gemfile Anda jika Anda dapat menghindarinya. devcenter.heroku.com/articles/rails-asset-pipeline#therubyracer Saya berpikir bahwa menginstal runtime Javascript yang tepat di Ubuntu adalah jawaban yang benar untuk pertanyaan ini.
M. Scott Ford

Jawaban:

436

Pengguna Ubuntu

Saya di Ubuntu 11,04 dan memiliki masalah serupa. Menginstal Node.js memperbaikinya.

Pada Ubuntu 13.04 x64 Anda hanya perlu menjalankan:

sudo apt-get install nodejs

Ini akan menyelesaikan masalah.


Pengguna CentOS / RedHat

sudo yum install nodejs
eldewall
sumber
1
mencobanya. tidak berhasil. Saya bertanya-tanya apakah itu konflik rvm atau sesuatu. Semua yang disarankan orang lain tidak berhasil untuk saya.
srboisvert
76
permata 'execjs' permata 'therubyracer' itu solusi yang lebih baik daripada ini.
dwaynemac
26
Heroku sekarang sangat tidak mendukung therubyracer karena penggunaan memori. Saya menginstal nodejs pada mesin dev saya per jawaban ini dan mengeluarkan therubyracer dari gemfile saya. Lihat juga stackoverflow.com/questions/7092107/… .
Mark Berry
11
@dwaynemac saya tidak setuju. Saya lebih suka runtime ada sebagai perpustakaan OS (seperti dengan Mac dan Windows secara default), daripada menambahkan permata lain ke daftar ketergantungan.
William Denniss
1
Tampaknya therubyracer dan execjs menyebabkan masalah dengan penyebaran heroku, kecuali ada hal lain yang dimodifikasi yang saya lewatkan. Ini adalah solusi yang disukai.
Sturm
445

Cukup tambahkan ExecJS dan Ruby Racer di file gem Anda dan jalankan bundle installsetelahnya.

gem 'execjs'

gem 'therubyracer'

Semuanya harus baik-baik saja setelahnya.

vincent jacquel
sumber
6
Ini bekerja untuk saya, rails 3.1rc4 dan Ubuntu 11.04 (percobaan pertama saya dengan rails 3.1). Saya mencoba membuat perancah ketika saya mendapatkan kesalahan. Masih cukup lumpuh bahwa rel 3.1 "rusak" di luar kotak.
wonderfulthunk
35
Untuk Rails 3.1 RC 6, Anda hanya perlu menentukangem 'therubyracer'
Amree
5
Apakah masih ada untuk memasukkan permata ini ke dalam Gemfile default saat aplikasi baru dibuat?
Richard Fawcett
2
ini adalah solusi yang lebih baik daripada menginstal node.js. Jika Anda menggunakan server jauh atau berbagi aplikasi dengan pengembang lain, membuat semua orang memasang node.js jauh lebih menyakitkan daripada hanya menjalankan instalasi bundel, yang akan mereka lakukan.
jdkealy
19
Heroku sekarang sangat tidak mendukung therubyracer karena penggunaan memori. Saya menginstal nodejs pada mesin dev saya ( github.com/joyent/node/wiki/… ) dan mengeluarkan therubyracer dari gemfile saya. Lihat juga stackoverflow.com/questions/7092107/… .
Mark Berry
77

Dalam file Gem Anda, tulis

gem 'execjs'
gem 'therubyracer'

dan kemudian jalankan

bundle install

Semuanya bekerja dengan baik untuk saya :)

manish nautiyal
sumber
9
Anda tidak perlu menambahkan 'execjs'
miguelSantirso
Ya ur tepat di rel 3.2.1 Anda harus menggunakan hanya gem'therubyracer '
manish nautiyal
Terima kasih @manish nautiyal dan @ Peter Mortensen. itu bekerja untuk saya
Ravindra
48

Saya memiliki masalah yang sama: aplikasi Rails 3.1 saya bekerja dengan baik di Windows tetapi mendapat kesalahan yang sama dengan OP ketika berjalan di Linux. Perbaikan yang berhasil bagi saya di kedua platform adalah menambahkan yang berikut ke saya Gemfile:

gem 'therubyracer', :platforms => :ruby

Kuncinya adalah mengetahui itu :platforms => :rubysebenarnya berarti hanya menggunakan permata ini dengan "C Ruby (MRI) atau Rubinius, tetapi BUKAN Windows."

Mungkin nilai-nilai lain untuk :platformsdijelaskan dalam satu bundlerhalaman manual .

FYI: Windows memiliki mesin JavaScript bawaan yang execjsdapat ditemukan. Di Linux tidak ada builtin meskipun ada beberapa tersedia yang dapat diinstal. therubyraceradalah salah satunya. Lainnya terdaftar di execjs README.md .

jwfearn
sumber
Terima kasih, yang satu ini memperbaikinya untuk saya di Ubuntu Oneiric menggunakan rvm instalasi ruby ​​1.9.3 dan Rails 3.2.1
Yashima
Terima kasih banyak Pak!
DaTroop
Saya mengalami kesalahan pada server CentOS dengan node.js diinstal. Ini membuat saya melewatinya. Terima kasih!
ncherro
36

Menambahkan permata berikut ke Gemfile saya memecahkan masalah:

gem 'therubyracer'

Kemudian gabungkan dependensi baru Anda:

$ bundle install
JDutil
sumber
juga tambahkan permata 'execjs' di Gemfile
Bijendra
6
execjs sudah disertakan oleh rel sekarang. Itu hanya juga diperlukan selama kandidat rilis.
JDutil
16

Cara alternatif adalah dengan hanya bundel tanpa grup permata yang berisi hal-hal yang tidak Anda miliki.

Begitu juga:

bundle install --without assets

Anda tidak harus memodifikasi Gemfile sama sekali, asalkan tentu saja Anda tidak melakukan hal-hal rantai aset - yang biasanya berlaku di lingkungan non-pengembangan. Bundle akan mengingat pengaturan '--without' Anda di file .bundle / config.

moskop
sumber
Jawaban Terbaik. Bekerja untuk rel versi 3.2.3
Frantzdy Romain
1
Ini hebat, dan perbaikan yang sangat sederhana. Situs Heroku mengatakan RubyRacer tidak lagi diperlukan (dengan tumpukan Cedar) jadi saya bingung mengapa tiba-tiba program saya tidak berjalan secara lokal. Ini berhasil.
Mike Blyth
6

Tambahkan permata berikut dalam file permata Anda

gem 'therubyracer'
gem 'execjs'

dan lari

bundle install

kamu selesai :)

Ramiz Raja
sumber
6

Untuk amazon linux (AMI):

sudo yum install nodejs npm --enablerepo=epel
William Hu
sumber
1
Terima kasih, ini seharusnya ada di level yang lebih tinggi
David Mauricio
ini penting untuk mendapatkan penyebaran capistrano untuk bekerja pada distro linux standar AWS.
jjk
4

Saya dulu menambahkan Ruby Racer ke file Gem untuk memperbaikinya. Tapi hei, Node.js berhasil!

Richard Zhang
sumber
bagaimana Anda menambahkan nodejs ke gemfile? Saya tidak menemukan permata simpul.
Papouche Guinslyzinho
4

Saya memiliki kesalahan yang sama tetapi hanya pada server pementasan saya bukan lingkungan produksi saya. nodejs sudah diinstal pada kedua lingkungan.

Dengan mengetik:

which node

Saya menemukan bahwa perintah node terletak di: / usr / bin / node pada produksi tetapi: / usr / local / bin / node dalam pementasan.

Setelah membuat symlink pada pementasan yaitu:

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

aplikasi kemudian bekerja dalam pementasan.

Tidak perlu repot.

Sean
sumber
bekerja seperti pesona! Sebuah saran: Saya perlu membuat symlink nodejsjuga
Rafael Gomes Francisco
3

Jangan gunakan RubyRacer karena memori buruk. Menginstal Node.js seperti yang disarankan oleh beberapa orang di sini adalah ide yang lebih baik.

Daftar runtime yang tersedia ini yang dapat digunakan oleh ExecJs Library juga mendokumentasikan penggunaan Node.js

https://github.com/sstephenson/execjs

Jadi, Node.js bukan solusi berlebihan, dan jauh lebih baik daripada menggunakan RubyRacer.

Saraf
sumber
0

Saya mulai mendapatkan masalah ini ketika saya mulai menggunakan rbenv dengan Ruby 1.9.3 di mana sistem saya ruby ​​1.8.7. Permata dipasang di kedua tempat tetapi untuk beberapa alasan skrip rel tidak mengambilnya. Tetapi menambahkan "execjs" dan "therubyracer" ke Gemfile berhasil.

arangamani
sumber
0

Di file gem Anda Batalkan komentar pada baris ini.

19 # permata 'therubyracer', platform:: ruby

Dan jalankan bundle install

Anda siap bekerja. :)

Sandeep Roniyaar
sumber
0

Mencoba melakukan debug di RubyMine menggunakan Ubuntu 18.04, Ruby 2.6. *, Rails 5, & RubyMine 2019.1.1 , saya mengalami masalah yang sama.

Untuk mengatasi masalah ini, saya menghapus komentar mini_racerbaris dari saya Gemfiledan kemudian berlari bundle:

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

Mengubah:

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

Saya menginstal nodemelalui nvm dan mengalami masalah ini ketika menggunakan Capistrano. Capistrano tidak memuat nvm secara otomatis karena berjalan non-interaktif.

Untuk memperbaikinya, cukup pindahkan garis yang ditambahkan nvm ~/.bashrcke atas Anda. File kemudian akan terlihat seperti ini:

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
Kevin Cooper
sumber