ฉันได้รับข้อผิดพลาดนี้:
กวาดล้างคราด! ไม่พบรันไทม์ 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
ฉันจะแก้ไขสิ่งนี้ได้อย่างไร