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


403

내가 사용하려고 해요 Mongoid / 고안 레일 3.1 템플릿 ( Mongoid 및 고안을 ), 난라는 오류가 계속 ExecJS을 자바 스크립트 런타임을 찾을 수 있습니다. 내가 설치하지 않았을 때 충분히 공평 하지만 Node.js , Mustang 및 Ruby 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 파일에 ExecJS 와 Ruby 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.