เกิดข้อผิดพลาดขณะพยายามโหลดอัญมณี 'uglifier' (Bundler :: GemRequireError)


119

เหตุใดฉันจึงได้รับข้อผิดพลาดนี้

shibly@mybox:~/blog$ rails server
/home/shibly/.gem/ruby/2.2.4/gems/bundler-1.11.2/lib/bundler/runtime.rb:80:in `rescue in block (2 levels) in require': There was an error while trying to load the gem 'uglifier'. (Bundler::GemRequireError)
    from /home/shibly/.gem/ruby/2.2.4/gems/bundler-1.11.2/lib/bundler/runtime.rb:76:in `block (2 levels) in require'
    from /home/shibly/.gem/ruby/2.2.4/gems/bundler-1.11.2/lib/bundler/runtime.rb:72:in `each'
    from /home/shibly/.gem/ruby/2.2.4/gems/bundler-1.11.2/lib/bundler/runtime.rb:72:in `block in require'
    from /home/shibly/.gem/ruby/2.2.4/gems/bundler-1.11.2/lib/bundler/runtime.rb:61:in `each'
    from /home/shibly/.gem/ruby/2.2.4/gems/bundler-1.11.2/lib/bundler/runtime.rb:61:in `require'
    from /home/shibly/.gem/ruby/2.2.4/gems/bundler-1.11.2/lib/bundler.rb:99:in `require'
    from /home/shibly/blog/config/application.rb:7:in `<top (required)>'
    from /home/shibly/.gem/ruby/2.2.4/gems/railties-4.2.5/lib/rails/commands/commands_tasks.rb:78:in `require'
    from /home/shibly/.gem/ruby/2.2.4/gems/railties-4.2.5/lib/rails/commands/commands_tasks.rb:78:in `block in server'
    from /home/shibly/.gem/ruby/2.2.4/gems/railties-4.2.5/lib/rails/commands/commands_tasks.rb:75:in `tap'
    from /home/shibly/.gem/ruby/2.2.4/gems/railties-4.2.5/lib/rails/commands/commands_tasks.rb:75:in `server'
    from /home/shibly/.gem/ruby/2.2.4/gems/railties-4.2.5/lib/rails/commands/commands_tasks.rb:39:in `run_command!'
    from /home/shibly/.gem/ruby/2.2.4/gems/railties-4.2.5/lib/rails/commands.rb:17:in `<top (required)>'
    from bin/rails:9:in `require'
    from bin/rails:9:in `<main>

คุณได้แก้ปัญหานี้แล้วหรือยัง? ฉันมีปัญหาเดียวกัน ฉันใช้ Ruby 2.2.4 พร้อมราง 4.2.5 บน Ubuntu
เป็นเพียงผู้เรียน

2
ลอง sudo apt-get install nodejs
user3754535

คำตอบ:


252

คุณควรเรียกใช้คำสั่งต่อไปนี้เพื่อติดตั้ง NodeJS ใน Ubuntu

sudo apt-get install nodejs

หรือเรียกใช้สิ่งนี้สำหรับ OSX

brew install nodejs

Uglifier เป็นกระดาษห่อ JS และต้องใช้รันไทม์ JS ที่รันหรือตัวแปล JS ฉันจะเลือกติดตั้ง NodeJS


4
ทำไมต้องใช้ js env?
DragonKnight

1
มันใช้งานได้ :) ขอบคุณ แต่ทำไมเราถึงต้องติดตั้ง nodejs นี้?
Alankar More

1
เราต้องการ JS Runtime, @AlankarMore;) ดังนั้น NodeJS นี่เป็นตัวเลือกของฉันส่วนใหญ่เป็นเพราะสร้างขึ้นจากเครื่องยนต์ V8 ของ Chrome ( developers.google.com/v8 ) วันนี้เรามี JS มากมายที่ Rails และเราต้องการสภาพแวดล้อมที่กำหนดไว้เพื่อเรียกใช้ทุกสิ่งนั้น ซึ่งรวมถึงเครื่องห่อเวลาทำงาน / ล่าม ...
Marcos Serpa

1
หากติดตั้ง nodejs จากซอร์สตรวจสอบให้แน่ใจว่าไบนารีถูกติดตั้งใน/usr/bin/nodejsตำแหน่งที่ execjs คาดว่าจะพบ
Rok Strniša

1
@AboozarRajabi Nodejs ไม่ใช่สิ่งจำเป็น แต่รันไทม์ JS หรือล่ามคือ และนี่คือบทบาทของ NodeJS สำหรับกรณีของเรา หากไม่ใช่ NodeJS คุณจะต้องมีรันไทม์ / ล่าม JS อื่น
Marcos Serpa

36

ใน Rails Gemfile เริ่มต้นบรรทัดสำหรับอัญมณี 'therubyracer' จะถูกแสดงความคิดเห็น หากคุณไม่แสดงความคิดเห็นคุณจะได้รับอัญมณีนั้นและมันควรจะใช้งานได้

จาก " การเริ่มต้นใช้งาน Rails ":

การคอมไพล์การบีบอัดเนื้อหา CoffeeScript และ JavaScript คุณต้องมีรันไทม์ JavaScript ที่พร้อมใช้งานในระบบของคุณในกรณีที่ไม่มีรันไทม์คุณจะเห็นexecjsข้อผิดพลาดระหว่างการคอมไพล์เนื้อหา โดยปกติ Mac OS X และ Windows จะมาพร้อมกับรันไทม์ JavaScript ที่ติดตั้ง Rails เพิ่มtherubyracerอัญมณีในรายการที่สร้างขึ้นGemfileในบรรทัดแสดงความคิดเห็นสำหรับแอปใหม่และคุณสามารถยกเลิกการแสดงความคิดเห็นได้หากต้องการ therubyrhinoเป็นรันไทม์ที่แนะนำสำหรับผู้ใช้ JRuby และถูกเพิ่มโดยค่าเริ่มต้นGemfileในแอพที่สร้างขึ้นภายใต้ JRuby คุณสามารถตรวจสอบเวลาการทำงานทั้งหมดได้รับการสนับสนุนที่ExecJS


2
ขอบคุณ! สิ่งนี้ง่ายกว่าและดูสะอาดกว่าการใช้ NodeJS
ConnorWGarvey

ในขณะที่คำตอบนี้ใช้งานได้ แต่คุณควรมี (สำหรับการผลิต) รันไทม์ execjs ที่เหมาะสมเช่น node.js
Cyril Duchon-Doris

0

เกิดข้อผิดพลาดในการสร้างฐานข้อมูล

ปัญหาคือ Node.js พยายามติดตั้งโดยไม่มีsudoในสคริปต์:

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