ExecJS이며 JavaScript 런타임을 찾을 수 없습니다


403

내가 사용하려고 해요 Mongoid / 고안 레일 3.1 템플릿 ( Mongoid고안을 ), 난라는 오류가 계속 ExecJS을 자바 스크립트 런타임을 찾을 수 있습니다. 내가 설치하지 않았을 때 충분히 공평 하지만 Node.js , MustangRuby Racer 설치를 시도 했지만 아무것도 작동하지 않습니다.

JavaScript 런타임을 찾을 수 없습니다. 사용 가능한 런타임 목록 ( ) 은 sstephenson / ExecJS (GitHub)를 참조하십시오 ExecJS::RuntimeUnavailable.

이 작업을 수행하려면 어떻게해야합니까?


4
btw-우분투 카르 믹을 사용하고 있습니다.
srboisvert

답을 바꾸는 것을 고려해야합니다. Node.js 답변은 execjs / rubyracer만큼 좋지 않습니다.
Sean Dunford

3
루비 레이서는 다른 문제가 있습니다. 피할 수 있다면 Heroku는 더 이상 Gemfile에 포함하지 않는 것이 좋습니다. devcenter.heroku.com/articles/rails-asset-pipeline#therubyracer 우분투에서 적절한 Javascript 런타임을 설치하는 것이이 질문에 대한 정답이라고 생각합니다.
M. Scott Ford

답변:


436

우분투 사용자

우분투 11.04에 있는데 비슷한 문제가 있습니다. Node.js를 설치 하면 문제가 해결되었습니다.

우분투 13.04 x64부터 다음을 실행하면됩니다.

sudo apt-get install nodejs

문제가 해결됩니다.


CentOS / RedHat 사용자

sudo yum install nodejs

1
그것을 시도했다. 불운. 그것이 rvm 충돌인지 궁금합니다. 다른 사람들이 제안한 모든 것이 저에게 효과가 없었습니다.
srboisvert

76
gem 'execjs'gem 'therubyracer'이 솔루션보다 더 나은 솔루션입니다.
dwaynemac

26
헤 로쿠는 이제 메모리 사용으로 인해 루비 레이서를 낙담 시키고 있습니다. 이 답변에 따라 dev 시스템에 nodejs를 설치하고 gemfile에서 Rubyracer를 가져 왔습니다. stackoverflow.com/questions/7092107/… 도 참조하십시오 .
Mark Berry

11
@dwaynemac 동의하지 않습니다. 종속성 목록에 또 다른 gem을 추가하는 대신 런타임이 OS 라이브러리 (기본적으로 Mac 및 Windows에서와 같이)로 존재합니다.
윌리엄 데니스

1
내가 놓친 부분이 수정되지 않은 한, Rubyracer와 execjs가 heroku 배포에 문제를 일으키는 것으로 보입니다. 이것이 선호되는 솔루션입니다.
Sturm

445

gem 파일에 ExecJSRuby Racer 를 추가 하고 실행하십시오 bundle install.

gem 'execjs'

gem 'therubyracer'

후에 모든 것이 잘되어야합니다.


6
이것은 레일 3.1rc4와 우분투 11.04 (레일 3.1을 사용한 첫 번째 시도)에서 저에게 효과적이었습니다. 오류가 발생했을 때 비계를 생성하려고했습니다. Rails 3.1이 상자에서 "깨져있다"고 여전히 절름발이입니다.
wonderfulthunk

35
Rails 3.1 RC 6의 경우 다음을 지정하면됩니다.gem 'therubyracer'
Amree

5
새 응용 프로그램을 만들 때 이러한 gem을 기본 Gemfile에 포함시켜야합니까?
Richard Fawcett

2
이것은 node.js를 설치하는 것보다 더 나은 솔루션입니다. 원격 서버에 배포하거나 다른 개발자와 앱을 공유하는 경우 모든 사람들이 node.js를 설치하는 것은 번들 설치를 실행하는 것보다 훨씬 더 고통 스럽습니다.
jdkealy

19
헤 로쿠는 메모리 사용으로 인해 루비 레이서를 강하게 권장하지 않습니다 . 내 dev 컴퓨터 ( github.com/joyent/node/wiki/… ) 에 nodejs를 설치하고 gemfile에서 루비 레이서를 꺼 냈습니다. stackoverflow.com/questions/7092107/… 도 참조하십시오 .
Mark Berry

77

당신의 보석 파일에

gem 'execjs'
gem 'therubyracer'

그런 다음 실행

bundle install

모든 것이 나를 위해 잘 작동합니다 :)


9
'execjs'를 추가 할 필요가 없습니다
miguelSantirso

예. 레일 3.2.1에서 그렇습니다. gem'therubyracer '만 사용해야합니다
manish nautiyal

@manish nautiyal과 @ Peter Mortensen에게 감사드립니다. 그것은 나를 위해 작동
Ravindra

48

비슷한 문제가있었습니다. Rails 3.1 앱은 Windows에서 제대로 작동했지만 Linux에서 실행할 때 OP와 같은 오류가 발생했습니다. 두 플랫폼 모두에서 나를 위해 일한 해결책은 다음을 내 플랫폼에 추가하는 것이 었습니다 Gemfile.

gem 'therubyracer', :platforms => :ruby

트릭은 :platforms => :ruby실제로 "C Ruby (MRI) 또는 Rubinius (Windows는 아님)"에서만이 gem을 사용 한다는 것을 알고 있습니다.

다른 가능한 값 매뉴얼 페이지에:platforms 설명되어 있습니다bundler 있습니다.

참고 : Windows에는 JavaScript 엔진이 내장되어 execjs있습니다. Linux에는 설치할 수있는 여러 가지가 있지만 내장 기능은 없습니다. therubyracer그들 중 하나입니다. 다른 것은 execjs README.md에 나열되어 있습니다.


고마워,이 하나는 루비 1.9.3 및 레일스 3.2.1의 rvm 설치를 사용하여 Ubuntu Oneiric에서 나를 위해 수정했습니다. 3.2.1
Yashima

매우 감사합니다!
DaTroop

node.js가 설치된 CentOS 서버에서 오류가 발생했습니다. 이것은 나를 지나쳤다. 감사!
ncherro 2013

36

Gemfile에 다음 gem을 추가하면 문제가 해결되었습니다.

gem 'therubyracer'

그런 다음 새 종속성을 묶습니다.

$ bundle install

Gemfile에 gem 'execjs'추가
Bijendra

6
execjs는 이미 레일에 포함되어 있습니다. 릴리스 후보 중에 만 필요했습니다.
JDutil

16

다른 방법은 당신이 가지고 있지 않은 것들을 포함하는 gem 그룹없이 번들링하는 것입니다.

그렇습니다 :

bundle install --without assets

Gemfile을 전혀 수정할 필요가 없습니다. 물론 자산 체인 작업을 수행하지 않는 경우가 많으며 일반적으로 비 개발 환경에 적용됩니다. 번들은 .bundle / config 파일에서 '--without'설정을 기억합니다.


최고의 답변. 레일 버전 3.2.3을 위해 일함
Frantzdy Romain

1
이것은 훌륭하고 간단한 수정입니다. Heroku 사이트는 RubyRacer가 더 이상 필요하지 않으므로 (시더 스택 포함) 갑자기 프로그램이 로컬에서 실행되지 않는 이유에 대해 의아해했습니다. 이 트릭을했다.
마이크 블라이스

6

gem 파일에 다음 gem을 추가하십시오

gem 'therubyracer'
gem 'execjs'

실행

bundle install

당신은 끝났습니다 :)


6

Amazon Linux (AMI)의 경우 :

sudo yum install nodejs npm --enablerepo=epel

1
고마워, 이것은 더 높은 수준이어야합니다
David Mauricio

이는 AWS 표준 Linux 배포판에서 작동하는 Capistrano 배포를 위해 필수적이었습니다.
jjk


4

이 같은 오류가 있었지만 프로덕션 환경이 아닌 스테이징 서버에서만 발생했습니다. nodejs는 이미 두 환경 모두에 설치되었습니다.

입력하여 :

which node

노드 명령이 프로덕션의 / usr / bin / node에 있지만 스테이징의 / usr / local / bin / node에 있습니다.

준비시 심볼릭 링크를 만든 후 :

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

그런 다음 응용 프로그램이 준비 작업을 수행했습니다.

아무 소란 스러움도 없습니다.


매력처럼 작동합니다! 충고 : 나는 nodejs또한 symlink를 만들어야했다
Rafael Gomes Francisco

3

메모리가 나쁘기 때문에 RubyRacer를 사용하지 마십시오. 일부 사람들이 제안한 Node.js를 설치하는 것이 좋습니다.

ExecJs 라이브러리에서 사용할 수있는 사용 가능한 런타임 목록은 Node.js의 사용도 문서화합니다.

https://github.com/sstephenson/execjs

따라서 Node.js는 RubyRacer를 사용하는 것보다 과잉이 아니며 훨씬 더 나은 솔루션입니다.



0

내 시스템 루비가 1.8.7 인 Ruby 1.9.3에서 rbenv를 사용하기 시작했을 때이 문제가 발생하기 시작했습니다. 보석은 두 곳에 설치되어 있지만 어떤 이유로 Rails 스크립트가 선택하지 않았습니다. 그러나 "execjs"와 "therubyracer"를 Gemfile에 추가하는 것이 트릭이었습니다.


0

gem 파일에서이 줄의 주석을 해제하십시오.

19 # gem 'therubyracer', 플랫폼 : : ruby

번들 설치를 실행하십시오.

일할 준비가되었습니다. :)


0

Ubuntu 18.04, Ruby 2.6. *, Rails 5 및 RubyMine 2019.1.1을 사용하여 RubyMine에서 디버그 시도 때 동일한 문제가 발생했습니다.

이 문제를 해결하기 위해 mini_racer 내 줄을Gemfile 한 다음 실행했습니다 bundle.

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

로 변경:

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

0

나는 nvm을node 통해 설치 했으며 Capistrano와 함께 배포 할 때이 문제가 발생했습니다. Capistrano는 비 대화식으로 실행되기 때문에 nvm을 자동으로로드하지 않았습니다.

수정하려면 간단히 nvm이 추가 한 줄을 ~/.bashrc맨 위로 이동하십시오. 파일은 다음과 같이 보일 것입니다 :

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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.