gem 'uglifier'를로드하는 동안 오류가 발생했습니다. (번 들러 :: 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>

이 문제를 해결 했습니까? 나는 똑같은 문제가 있습니다. 우분투에서 레일 4.2.5와 함께 루비 2.2.4를 실행하고 있습니다.
그냥 학습자

2
sudo apt-get install nodejs 시도
user3754535

답변:


252

Ubuntu에 NodeJS를 설치하려면 다음 명령을 실행해야합니다.

sudo apt-get install nodejs

또는 OSX 용으로 실행

brew install nodejs

Uglifier는 JS 래퍼이며 JS 런타임 또는 JS 인터프리터가 필요합니다. NodeJS를 설치하기로 선택했습니다.


4
왜 js env가 필요한가요?
DragonKnight

1
작동합니다 :) 감사합니다. 그런데 왜이 nodejs를 설치해야합니까?
Alankar More

1
JS 런타임, @AlankarMore;)가 필요합니다. 따라서 NodeJS는 주로 Chrome의 V8 엔진 ( developers.google.com/v8 )을 기반으로 구축 되었기 때문에 일반적으로 제 선택 입니다. 오늘 Rails에는 많은 JS가 있습니다. 그리고 우리는 모든 것을 실행할 수있는 환경이 필요합니다. 즉 ... 래퍼, 런타임 / 통역을 포함
마르코스 세르파에게

1
소스에서 nodejs를 설치하는 경우 바이너리가 /usr/bin/nodejsexecjs가 찾을 것으로 예상하는 위치에 설치되었는지 확인하십시오 .
Rok Strniša

1
@AboozarRajabi Nodejs는 필수는 아니지만 JS 런타임 또는 인터프리터는 필수입니다. 그리고 이것이 우리의 경우 NodeJS의 역할입니다. NodeJS가 아니면 다른 JS 런타임 / 인터프리터가 필요합니다.
Marcos Serpa

36

기본 Rails Gemfile에서 gem 'therubyracer'의 줄은 주석 처리되어 있습니다. 주석 처리를 제거하면 해당 보석이 표시되고 작동합니다.

" Rails 시작하기 "에서 :

CoffeeScript 및 JavaScript 자산 압축을 컴파일하려면 시스템에서 JavaScript 런타임을 사용할 수 있어야합니다. 런타임이 없으면 execjs자산 컴파일 중에 오류 가 표시됩니다 . 일반적으로 Mac OS X 및 Windows에는 JavaScript 런타임이 설치되어 있습니다. Rails는 새 앱의 주석 처리 된 줄에 therubyracer생성 Gemfile된 gem에 gem을 추가하고 필요한 경우 주석 처리를 해제 할 수 있습니다. therubyrhinoJRuby 사용자에게 권장되는 런타임이며 기본적으로 GemfileJRuby에서 생성 된 인앱에 추가됩니다 . ExecJS 에서 지원되는 모든 런타임을 조사 할 수 있습니다 .


2
감사! 이것은 NodeJS에 의존하는 것보다 쉽고 깨끗해 보입니다.
ConnorWGarvey

이 대답은 당신이 아니라 (생산)이 것을 회피한다 작동하지만 적절한 execjs은 Node.js를 같은 런타임
시릴 Duchon - 도리스

0

db를 만드는 동안 오류가 발생했습니다.

문제는 Node.js sudo가 스크립트 없이 설치를 시도했다는 것입니다 .

sudo apt-get install nodejs
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.