execJs: 'ไม่พบ JavaScript runtime' แต่ execjs และ therubyracer อยู่ใน Gemfile


191

ฉันได้รับข้อผิดพลาดนี้:

กวาดล้างคราด! ไม่พบรันไทม์ JavaScript ดูhttps://github.com/sstephenson/execjs ,

ฉันใช้เวลาค้นหา google ไปหลายชั่วโมงแล้วและฉันยินดีที่จะยอมรับ ฉันเชื่อว่านี่เป็นข้อผิดพลาดของ execJs

จากโพสต์ทั้งหมดนี่เป็นปัญหาที่พบได้บ่อยมากกับ Rails 3.1 ตอนนี้จำเป็นต้องใช้รันไทม์ js โดยสิ่งที่เป็นอัญมณีมาตรฐานเช่นสคริปต์กาแฟและ sass

กรณีเหล่านี้ส่วนใหญ่ได้รับการแก้ไขโดยการเพิ่มอัญมณี 'execjs' และ 'therubyracer' ลงในแอพ Gemfile แล้วเรียกใช้ 'การอัปเดตชุดข้อมูล' และ / หรือ 'การติดตั้งชุดรวม' แต่ไม่ใช่สำหรับฉัน

ฉันเดาว่าฉันโชคดี ฉันใช้งาน Rails 3.1.3 / ruby ​​1.9 บน Redhat Linux 4 รุ่นเก่า (2.6.9-101.ELsmp) และ gcc คือ 3.4.6

รายงานอื่น ๆ ที่แก้ไขไม่ได้ช่วยฉันไม่สามารถติดตั้ง 'nodejs', 'johnson' หรือ 'mustang' ส่วน runtimes execJs อื่นควรจะค้นหาและใช้งาน พวกเขาจะไม่ทำ / ติดตั้งบนระบบของฉัน

ฉันต้องแก้ไขปัญหาที่ก่อให้เกิด execJs ล้มเหลวในการค้นหา 'therubyracer' นี่คือ Gemfile (และการติดตั้งมัดพูดว่าตกลง):

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

และนี่คือร่องรอย:

~/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>'

ไม่มีอะไรน่าสนใจในบันทึกการพัฒนา

นี่คือ 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  

ฉันได้ลองใช้ execjs-1.2.13 แล้ว ปัญหาเดียวกัน.

หากฉันแสดงความคิดเห็น execjs.rb ด้านล่างฉันสามารถเรียกใช้ rake โดยไม่มีข้อผิดพลาด:

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

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

แต่ฉันก็ไม่ได้รับไทม์

ฉันสามารถดูว่าข้อความผิดพลาดมาจากไหนใน runtimes.rb:

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

ดังนั้นคำถามคือเนื่องจากฉันติดตั้ง 'therubyracer' แล้วทำไม runtimes.rb หามันไม่พบ? execJs เสียหรือไม่

นี่มัน 'therubyracer':

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

ฉันจะแก้ไขสิ่งนี้ได้อย่างไร

คำตอบ:


346

ผู้ใช้ Ubuntu:

ฉันมีปัญหาเดียวกันและฉันแก้ไขได้โดยติดตั้งnodejsบนระบบของฉันเป็นอิสระจากอัญมณี

บน Ubuntu ของมัน: sudo apt-get install nodejs

ฉันใช้ 64 บิต Ubuntu 11.10

อัปเดต: จากคำตอบของ @Galina ด้านล่างฉันคาดเดาว่าจำเป็นต้องใช้ nodejs เวอร์ชันล่าสุดดังนั้น @ steve98177 ตัวเลือกที่ดีที่สุดของคุณในกล่อง redhat (หรือ CentOS) คือการติดตั้งจากซอร์สโค้ดเหมือนกับ @Galina แต่ตามที่คุณทำ ไม่สามารถ "สร้าง / ติดตั้ง" ในช่องนี้ได้หรือไม่ฉันขอแนะนำให้คุณลองติดตั้ง fedora รอบต่อนาที (ยิงยาว) https://github.com/joyent/node/wiki/Installing-Node.js-via-package- ผู้จัดการ หรือหากล่อง RH / CentO อื่น (ที่คุณสามารถ 'เปิด') และสร้างรอบต่อนาทีของคุณเองและติดตั้งในกล่อง RH ดั้งเดิม (ถ้า glibc เก่าบน RH เล่นได้ดี)

ปัญหาจริงที่นี่ (IMHO) กำลังติดตั้ง Gems ที่มีการพึ่งพาแพ็คเกจที่ติดตั้งนอกสภาพแวดล้อม ruby ​​มีวิธีรู้ก่อนติดตั้งหรือไม่? RFI สำหรับ Gems หรือ Bundler?


ผู้ใช้ CentOS / RedHat:

sudo yum install nodejs

1
บน Ubuntu ฉันต้องอัปเดต audo apt-get และจากนั้น nodejs ติดตั้งทำงาน
Vineet Bhatia

ฉันมีปัญหาเดียวกันกับ Ubuntu 12.04-32 บิตกับทับทิม 1.9.3p392, ราง 3.2.3, อัญมณี 1.8.25 ได้รับข้อผิดพลาดเดียวกันขณะเรียกใช้ "script / rails console" และ "script / rails server" sudo apt-get install nodejsแก้ไขปัญหาของฉัน
ajin6747

มันต้องเป็นโหนดหรือไม่? ฉันค่อนข้างมั่นใจว่าคุณสามารถใช้คนอื่นเช่น therubyracer, therubyrhino หรือ Apple JavaScriptCore ฉันรู้ว่า ExecJS สนับสนุนพวกเขา github.com/sstephenson/execjs
ดัสตินกริฟฟิ ธ

ความพยายามในการติดตั้ง gem ใด ๆ ของ runtimes ทางเลือกที่สนับสนุนโดย execjs ทำให้ฉันไม่มีที่ไหนเลย จริง ๆ แล้วการติดตั้ง nodejs ก็ใช้งานได้ ห่างไกลจากอุดมคติ แต่ทำให้คุณผ่านการโพสต์
Mitch Kent

ฉันใช้ Ubuntu 14.04 แก้ไขปัญหาหลังจากติดตั้ง nodejs
Charles Wu

108

ใน gemfile ของคุณเพิ่ม:

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

สำหรับรายละเอียดเพิ่มเติม: ExecJS และไม่พบรันไทม์ JavaScript


1
ขอบคุณ แต่นั่นไม่ได้ผล ดูความพยายามนี้เพื่อรับ rubyrhino ที่รู้จักโดย execjs: gem ซึ่ง rhino /usr/local/lib/ruby/gems/1.9.1/gems/therubyrhino-1.73.1/lib/rhino.rb
steve98177

ทำงานให้ฉันด้วยเช่นกันสำหรับผู้เริ่มต้นทางรถไฟเช่นฉัน: Gemfile อยู่ในโฟลเดอร์โครงการ
McSas

1
สำหรับผู้ที่ไม่สามารถใช้งานได้ให้ลองใช้งานgem install therubyracerก่อน
maksimov

สำหรับคนอื่น ๆ ที่มีปัญหานี้ฉันกำลังติดตั้งโปรเจคที่มีชีวิตชีวาของ Shopify เข้าสู่ระบบ CentOS 5.8 และทำงานเป็นปัญหารันไทม์ของ execjs ฉันเพิ่มสิ่งนี้ในของฉันGemfileและใช้งานได้
Casey

ตกลงใช้งานได้ดี แต่ทำไมเราต้องทำเช่นนั้น? ทุกครั้งที่ฉันเพิ่มบรรทัดลงใน Gemfile ของฉันมันจะต้องสมเหตุสมผลสำหรับโครงการส่วนบุคคลและสำหรับโครงการของทีมมันก็ยิ่งแย่กว่านี้เพราะสิ่งนี้ส่งผลกระทบต่อเครื่องของผู้อื่นในขณะที่ปัญหานั้นเกิดจากสภาพแวดล้อมที่เฉพาะเจาะจง IMHO นั้นไม่ใช่ทางออกที่ดีนักในระยะยาว
Augustin Riedinger


13

เมื่อคุณสร้างโครงการที่ว่างเปล่าบรรทัดนี้จะแสดงความคิดเห็นใน Gemfile เพียงแค่แสดงความคิดเห็นมันและมัด!

gem 'therubyracer', :platforms => :ruby

2
... และมัด! นี่คือคำตอบที่ง่ายที่สุด
etusm


4

ฉันใช้ Ubuntu 11.10-32 บิตกับทับทิม 1.9.3p194, ราง 3.2.3, อัญมณี 1.8.24 ได้รับข้อผิดพลาด Javascript เดียวกันขณะที่เรียกใช้ "คอนโซลสคริปต์ / ราง"

อย่างไรก็ตามการทำ "sudo apt-get install nodejs" แก้ไขปัญหาของฉันได้


4

ผู้ใช้ Fedora จะไม่สามารถทำการ "yum install nodejs" ได้ง่าย ๆ เนื่องจากการตั้งชื่อและข้อขัดแย้งของตำแหน่งไฟล์ที่ป้องกันไม่ให้แพคเกจนี้ไม่สามารถใช้งานได้ผ่านทางที่เก็บของ Fedora

เห็นได้ชัดว่ามีพื้นที่เก็บข้อมูลสำรองอย่างน้อยหนึ่งแห่งที่พร้อมใช้งานกับโครงสร้างทางเลือกที่อาจใช้งานได้ แต่นั่นเป็น "ตัวเลือก" สองตัวที่มากเกินไปสำหรับฉันที่จะเต็มใจใช้


นี่อาจเป็นจริงในเวลา แต่มันจะทำงานได้ดีในขณะนี้ (ธ.ค. 2015)
มิทช์เคนต์


4

ถ้าคุณอยู่บน Ubuntu $ sudo apt-get install nodejs

พยายามอย่าใช้ระบบอื่นเช่น Windows เพื่อการพัฒนา คิดว่าเซิร์ฟเวอร์เกือบทุกแห่งในโลกนั้นเป็นเซิร์ฟเวอร์ Linux ดังนั้นเมื่อคุณพยายามปรับใช้แอปพลิเคชันนั้นจะง่ายขึ้นหากคุณพัฒนาบนระบบ Linux หรือ Unix ด้วย


3

ฉันมีปัญหาเดียวกันบนเซิร์ฟเวอร์จัดเตรียม ฉันไม่มีปัญหาในการเรียกใช้งาน rake บนเครื่องพัฒนาท้องถิ่น แต่การปรับใช้เซิร์ฟเวอร์ staging ล้มเหลวโดยมีข้อความแสดงข้อผิดพลาด"ไม่พบ JavaScript runtime"ในขณะที่พยายามเรียกใช้เนื้อหา:งานคราดล่วงหน้า

แน่นอนว่าtherubyracerและexecjsอยู่ใน Gemfile ของฉันและฉันใช้เวอร์ชันล่าสุด ฉัน Gemfile.lock ไฟล์จับคู่และฉันอีกรุ่นที่ตรวจสอบโดยการวิ่งโชว์มัด

หลังจากค้นหาใน Google ฉันก็สิ้นสุดการลบพลอยทั้งหมดและติดตั้งใหม่ซึ่งแก้ไขปัญหาได้ ฉันยังไม่รู้ว่าสาเหตุที่แท้จริงคืออะไร แต่อาจช่วยคุณได้

นี่คือสภาพแวดล้อมของฉัน BTW:

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

ฉันมีปัญหานี้ใน Ubuntu 10.04 ไม่คิดว่าจะไปกับ ubuntu 12.04 คุ้มค่า แต่ฉันคิดว่ามันเป็น! ดังนั้นฉันคิดว่าในกรณีของฉันปัญหาคือฉันรวบรวมและคอมไพล์ทับทิมใหม่ของฉัน (1.9.3, 1.9.2) หลายครั้งเกินไป ฉันจะรวบรวมใหม่อีกครั้งเพื่อดูว่าจะแก้ไขได้ไหม โอ้และฉันกำลังอัพเกรด apt-get เป็นรุ่นล่าสุด
Victor Pudeyev

3

ผมมีปัญหาเหมือนกัน. การเพิ่มพลอย 'execjs' และ 'therubyracer' ไม่ทำงานสำหรับฉัน apt-get install nodejs - ยังไม่สามารถใช้งานได้ ฉันใช้ 64 บิต Ubuntu 10.04

แต่มันช่วยฉันได้ดังนี้ 1. ฉันสร้างโฟลเดอร์เปล่าขึ้นมา (เช่น "java") 2. จากเทอร์มินัลในโฟลเดอร์ที่ฉันสร้างฉัน:

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

หลังจากนั้นฉันเรียกใช้ "bundle install" ตามปกติ (จากโฟลเดอร์ที่มีโครงการ ruby ​​& rails) และปัญหาได้รับการแก้ไข Ruby ไม่จำเป็นต้องติดตั้งใหม่


ทุกคนที่ลองใช้งานตอนนี้จะได้รับข้อผิดพลาด โปรดลองทำตามคอมไพล์ git github.com/nodejs/node
Yeasin Ar Rahman

2

ฉันมีสิ่งนี้เกิดขึ้นกับฉันบนเครื่อง Windows ของฉันปรากฎว่าปัญหาแตกต่างกันมาก ฉันลบเส้นทางบางส่วนออกจาก%PATH%ตัวแปรโดยไม่ตั้งใจ เพียงรีสตาร์ทพร้อมท์คำสั่งเพื่อแก้ไข ดูเหมือนกับว่ามีรันไทม์ JS ในหนึ่งในพา ธ ที่หายไปเหล่านั้น


ฉันยังเกิดขึ้นได้ลบเส้นทางจากเครื่อง windows ของฉันคุณจะพูดถึงวิธีการ U ไม่เพิ่ม js เส้นทาง
ฮุสเซนอัคทาร์ Wahid 'Ghouri'

@HussainAkhtarWahid ฉันไม่ได้เขียนทับ autoexec ของฉันหรืออะไรอย่างนั้นดังนั้นสิ่งที่ฉันต้องทำคือปิดเซสชัน cmd ของฉันและเปิดใหม่อีกครั้ง
Godwin

คุณทำได้ดีมากนี่เป็นปัญหาของฉันหลังจากพยายามติดตั้งทุกอย่างที่จำเป็นสำหรับสภาพแวดล้อมการพัฒนา Windows ruby
HostMyBus

2

ฉันดึงผมออกมาด้วยความผิดพลาดครั้งนี้ ฉันจัดการเพื่อทำให้บางครั้งหายไปโดยเริ่ม Apache / Nginx

ดังนั้นฉันจึงแก้ไขแบบเดียวกับข้างบนโดยเพิ่มสิ่งต่อไปนี้ในไฟล์ GEM:

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

แล้วฉันจะลบไฟล์ gemfile.lock ของฉันแล้วรันใหม่ "กำติดตั้ง" ฉันพบว่า "การติดตั้งแบบรวมกลุ่ม" เท่านั้นจริง ๆ แล้วติดตั้งไลบรารีที่ถูกต้องเป็นต้น



1

เมื่อฉันสร้างรางควบคุม g ฉันได้รับข้อผิดพลาดเดียวกัน หลังจากนั้นเมื่อทำการเปลี่ยนแปลงต่อไปนี้ใน Gemfile (ในรางที่ 4) ทุกอย่างราบรื่นขึ้นการเปลี่ยนแปลงที่ฉันทำคือ

gem 'execjs'
gem 'therubyracer', "0.11.4"
หลังจากนั้นฉันสามารถเรียกใช้เซิร์ฟเวอร์และสามารถดำเนินการขั้นพื้นฐานทั้งหมดในแอปพลิเคชันได้



0

ในกรณีของฉันใช้bundleคำสั่งได้หลอกลวง ฉันเชื่อว่าพวกเขาเจอกันแล้ว


0

ฉันมีปัญหานี้เมื่อใช้ RubyMine (6.3.3) วันหนึ่งฉันพยายามรันโค้ด แต่มันใช้งานไม่ได้และบ่นว่าไม่พบ JavaScript รันไทม์ ฉันสามารถวิ่งrails sได้ การแก้ไขสำหรับฉันกำลังสร้างการกำหนดค่า Run ใหม่ ดูเหมือนว่าแปลกจริง ๆ ว่าการกำหนดค่าการเรียกใช้จะเสียหาย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.