execJs : 'JavaScript 런타임을 찾을 수 없습니다'그러나 execjs 및 therubyracer는 Gemfile에 있습니다.


191

이 오류가 발생합니다.

갈퀴가 중단되었습니다! JavaScript 런타임을 찾을 수 없습니다. https://github.com/sstephenson/execjs를 참조 하십시오 .

나는 이미 구글 검색에 더 많은 시간을 보냈다. 나는 이것이 execJs 버그라고 생각합니다.

모든 게시물에서 이것은 레일스 3.1에서 매우 일반적인 문제입니다. js 런타임은 이제 커피 스크립트 및 sass와 같은 표준 보석으로 필요합니다.

이러한 경우는 대부분 보석 'execjs'및 'therubyracer'를 앱 Gemfile에 추가 한 다음 '번들 업데이트'및 / 또는 '번들 설치'를 실행하여 해결되었습니다. 그러나 나를 위해 아닙니다.

나는 운이 좋았다고 생각한다. 이전 버전의 Redhat Linux 4 (2.6.9-101.ELsmp)에서 레일 3.1.3 / ruby ​​1.9를 실행 중이고 gcc는 3.4.6입니다.

보고 된 다른 수정 프로그램이 도움이되지 않습니다 .'nodejs ','johnson '또는'mustang '을 설치할 수 없습니다. 다른 런타임 execJ가 찾아서 사용해야합니다. 그들은 내 시스템에 설치 / 설치하지 않습니다.

execJ가 'therubyracer'를 찾지 못하는 문제를 해결해야합니다. 다음은 Gemfile입니다 (번들 설치에 Ok가 표시됩니다).

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 디렉토리는 다음과 같습니다.

/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를 주석 처리하면 오류없이 레이크를 실행할 수 있습니다.

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를 찾을 수없는 이유는 무엇입니까? execJ가 손상 되었습니까?

여기에 'Therubyracer'가 있습니다.

/usr/local/lib/ruby/gems/1.9.1/gems/therubyracer-0.9.9

이 문제를 어떻게 해결할 수 있습니까?

답변:


346

우분투 사용자 :

나는 같은 문제가 있었고 nodejsgem과는 독립적으로 시스템 에 설치 하여 문제를 해결했습니다 .

우분투에서 : sudo apt-get install nodejs

64 비트 우분투 11.10을 사용하고 있습니다.

업데이트 : 아래 @Galina의 답변에서 최신 버전의 nodejs가 필요하다고 생각합니다. @ steve98177 redhat (또는 CentOS) 상자에서 가장 좋은 옵션은 @Galina처럼 소스 코드에서 설치하는 것입니다. 이 상자에 "make / install"을 할 수 없습니까? fedora rpm (long shot)을 설치해보십시오. https://github.com/joyent/node/wiki/Installing-Node.js-via-package- 관리자 또는 다른 RH / CentOs 상자를 찾고 ( '만들 수있는') 자신의 rpm을 생성하고 원래 RH 상자에 설치하십시오 (RH의 오래된 glibc가 잘 작동하는 경우).

실제 문제 (IMHO)는 루비 환경 외부에 설치된 패키지에 의존하는 보석을 설치하는 것입니다. 설치하기 전에 알 수있는 방법이 있습니까? 보석 또는 번 들러 용 RFI?


CentOS / RedHat 사용자 :

sudo yum install nodejs

1
우분투에서 apt-get update를 sudo해야했고 nodejs 설치가 작동했습니다.
Vineet Bhatia

루비 1.9.3p392, 레일 3.2.3, 보석 1.8.25의 우분투 12.04-32 비트에서 동일한 문제가 발생했습니다. "스크립트 / 레일 콘솔"및 "스크립트 / 레일 서버"를 실행하는 동안 동일한 오류가 발생했습니다. sudo apt-get install nodejs내 문제를 해결했습니다.
ajin6747

그래도 노드 여야합니까? 나는 당신이 Rubyracer, therubyrhino 또는 Apple JavaScriptCore와 같은 다른 것을 사용할 수 있다고 확신합니다. ExecJS가 지원한다는 것을 알고 있습니다. github.com/sstephenson/execjs
더스틴 그리피스

execjs가 지원하는 대체 런타임을 gem 설치하려고 시도하면 아무데도 도움이되지 않습니다. 실제로 nodejs를 설치하면 효과가 있습니다. 이상적이지는 않지만 게시물을 지나갈 수 있습니다.
Mitch Kent

우분투 14.04를 사용합니다. nodejs 설치 후 문제가 해결되었습니다.
Charles Wu

108

gemfile에서 다음을 추가하십시오.

gem 'execjs'
gem 'therubyracer', :platforms => :ruby

자세한 내용 : ExecJS이며 JavaScript 런타임을 찾을 수 없습니다


1
고맙지 만 작동하지 않습니다. execjs가 rubyrhino를 인정 받으려는이 시도를보십시오 : gem which rhino /usr/local/lib/ruby/gems/1.9.1/gems/therubyrhino-1.73.1/lib/rhino.rb
steve98177

저와 같은 레일 초보자를위한 참고 사항 : Gemfile은 프로젝트 폴더에 있습니다.
McSas

1
이것이 효과가없는 사람들을 위해 : gem install therubyracer먼저 달리기를 시도하십시오 .
maksimov

이 문제가있는 다른 사람에게는 Shopify의 대시 프로젝트를 CentOS 5.8 시스템에 설치하고 execjs 런타임 문제가 발생했습니다. 나는 이것을 내 것에 추가 Gemfile했고 효과가있었습니다.
Casey

좋아, 잘 작동합니다. 그러나 왜 그렇게해야합니까? Gemfile에 줄을 추가 할 때마다 개인 프로젝트와 팀 프로젝트에 실제로 의미가 있어야합니다. 문제는 환경에 따라 다르지만 다른 사람의 컴퓨터에 영향을 미치기 때문에 더 어려워집니다. IMHO 그것은 장기적으로 매우 괜찮은 해결책이 아닙니다.
Augustin Riedinger


13

빈 프로젝트를 만들면이 줄은 Gemfile에서 주석 처리됩니다. 주석 처리를 제거하고 번들하십시오!

gem 'therubyracer', :platforms => :ruby

2
... 번들! 이것은 가장 쉬운 대답입니다.
etusm 2016 년


4

루비 1.9.3p194, 레일 3.2.3, 보석 1.8.24와 함께 우분투 11.10-32 비트를 사용하고 있습니다. "script / rails console"을 실행하는 동안 동일한 Javascript 오류가 발생했습니다.

그러나 "sudo apt-get install nodejs"를 수행하면 문제가 해결되었습니다.


4

Fedora 사용자는 심각한 이름 지정 및 파일 배치 충돌로 인해이 패키지를 Fedora 리포지토리를 통해 사용할 수 없게되므로 간단한 "yum install nodejs"를 수행 할 수 없습니다.

대체 빌드와 함께 사용할 수있는 대체 저장소가 하나 이상있는 것 같지만 사용하기에는 너무 많은 "대체"가 있습니다. 다른 대안을 찾고 있습니다.


이것은 당시에는 사실 이었지만 지금은 잘 작동합니다 (2015 년 12 월)
Mitch Kent


4

우분투에 있다면 $ sudo apt-get install nodejs

Windows와 같은 다른 시스템을 개발에 사용하지 마십시오. 전 세계 거의 모든 서버가 Linux 서버라고 생각하면 해당 응용 프로그램을 배포하려고 할 때 Linux 또는 Unix 환경에서도 해당 응용 프로그램을 개발하는 것이 더 쉬울 것입니다.


3

준비 서버에서 같은 문제가 발생했습니다. 로컬 개발 컴퓨터에서 레이크 작업을 실행하는 데 문제가 없었지만 asset : precompile 레이크 작업 을 실행하는 동안 "JavaScript 런타임을 찾을 수 없습니다" 오류 메시지 와 함께 스테이징 서버에 배포하는 데 실패했습니다 .

물론, RubyrubyerexecjsGemfile에 있었고 최신 버전을 사용하고있었습니다. 내 Gemfile.lock 파일이 일치했으며 bundle show 를 실행하여 버전을 추가로 확인 했습니다 .

Google에서 검색 한 후 모든 보석을 삭제하고 다시 설치 하여 문제를 해결했습니다. 나는 여전히 근본 원인이 무엇인지 모르지만 이것이 도움이 될 것입니다.

BTW의 환경은 다음과 같습니다.

Ubuntu 10.04.3 LTS
rbenv
Ruby 1.9.2-p290
bundler-1.0.21
execjs-1.3.0
therubyracer-0.9.9

우분투 10.04 에서이 문제가 있습니다. 우분투 12.04로가는 것이 가치가 있다고 생각하지는 않았지만 그만한 가치가 있다고 생각합니다! 따라서 필자의 경우 문제는 루비 (1.9.3, 1.9.2)를 너무 많이 컴파일하고 다시 컴파일 한 것입니다. 이것이 다시 수정되는지 확인하기 위해 다시 컴파일하고 있습니다. 아, 나는 내 apt-get을 최신으로 업그레이드하고 있습니다.
Victor Pudeyev

3

나는 같은 문제가 있었다. 보석 'execjs'와 'therubyracer'를 추가하면 효과가 없습니다. apt-get install nodejs-작동하지 않습니다. 64 비트 우분투 10.04를 사용하고 있습니다.

그러나 다음과 같은 도움이되었습니다. 1. 빈 폴더 (예 : "java")를 만들었습니다. 2. 내가 만든 폴더의 터미널에서 다음을 수행합니다.

$ git clone git://github.com/ry/node.git
$ cd node
$ ./configure
$ make
$ sudo make install

그런 다음 평소와 같이 "번들 설치"를 실행합니다 (ruby & rails 프로젝트가있는 폴더에서). 그리고 문제가 해결되었습니다. 루비는 다시 설치할 필요가 없었습니다.


이것을 시도하는 사람은 이제 오류가 발생합니다. 다음 자식 복제 시도하십시오 github.com/nodejs/node을
Yeasin 아르곤 라만

2

내 Windows 컴퓨터 에서이 문제가 발생했지만 문제가 상당히 다르다는 것이 밝혀졌습니다. 실수로 %PATH%변수 에서 일부 경로를 제거했습니다 . 명령 프롬프트를 다시 시작하면 해결되었습니다. 누락 된 경로 중 하나에 JS 런타임이있는 것처럼 보입니다.


나는 또한 내 Windows 컴퓨터에서 일부 경로를 제거했습니다. 어떻게 당신은 어떻게 js 경로를 추가 했습니까
Hussain Akhtar Wahid 'Ghouri'Jun

@HussainAkhtarWahid, autoexec 또는 다른 것을 덮어 쓰지 않았으므로 cmd 세션을 닫고 다시 열어야했습니다.
Godwin

잘하셨습니다, 이것은 Windows ruby ​​개발 환경에 필요한 모든 것을 설정하려고 시도한 후의 제 문제였습니다
HostMyBus

2

나는이 오류로 몇 번 머리카락을 뽑았습니다. Apache / Nginx를 다시 시작하여 언젠가 사라지게했습니다.

그래서 GEM 파일에 다음을 추가하여 위와 동일한 방식으로 수정했습니다.

gem 'execjs'
gem 'therubyracer', :platforms => :ruby

gemfile.lock 파일을 삭제 한 다음 "번들 설치"를 다시 실행했습니다. 나는 "번들 설치"가 실제로 올바른 라이브러리 등을 설치했다는 것을 알았습니다


1

우분투 sudo apt-get update에서 nodejs 설치가 필요했습니다.


1

레일 g 컨트롤러를 생성 할 때 동일한 오류가 발생했습니다. 그 후 Gemfile (레일 4)에서 다음과 같이 변경하면 모든 것이 순조롭게 진행되었습니다.

gem 'execjs'gem '
therubyracer', "0.11.4"
그 후 서버를 실행할 수 있고 응용 프로그램에서 모든 기본 작업을 수행 할 수 있습니다.



0

제 경우에는 bundle명령을 실행 하여 트릭을 수행했습니다. 나는 그들이 서로를 찾는 것을 믿습니다.


0

RubyMine (6.3.3)을 사용할 때이 문제가 발생했습니다. 어느 날 코드를 실행하려고 시도했지만 작동하지 않으며 JavaScript 런타임을 찾을 수 없다고 불평했습니다. 나는 달릴 수 있었다 rails s. 나를위한 수정은 새로운 Run 구성을 만드는 것이 었습니다. 실행 구성이 손상되는 것은 정말 기괴한 것 같습니다.

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