Zoeken op website

ruby on rails 3.1 - ExecJS en kon geen JavaScript-runtime vinden


Ik probeer de Mongoid/Devise Rails 3.1-sjabloon (Mongoid en Devise) te gebruiken, en ik blijf een foutmelding krijgen dat ExecJS geen JavaScript-runtime kan vinden. Begrijpelijk toen ik er geen had geïnstalleerd, maar ik heb geprobeerd Node.js, Mustang en de Ruby Racer te installeren, maar niets werkt.

Ik kon geen JavaScript-runtime vinden. Zie sstephenson/ExecJS (GitHub) voor een lijst van beschikbare runtimes (ExecJS::RuntimeUnavailable).

Wat moet ik doen om dit werkend te krijgen?

Antwoord #1

Ubuntu-gebruikers

Ik gebruik Ubuntu 11.04 en had vergelijkbare problemen. Het installeren van Node.js heeft het opgelost.

Vanaf Ubuntu 13.04 x64 hoeft u alleen het volgende uit te voeren:

sudo apt-get install nodejs

Dit zal het probleem oplossen.

CentOS/RedHat-gebruikers

sudo yum install nodejs

Antwoord #2

Voeg gewoon ExecJS en de Ruby Racer toe aan je gem-bestand en voer daarna bundle install uit.

gem 'execjs'

gem 'therubyracer'

Alles zou daarna goed moeten zijn.

Antwoord #3

Schrijf in je Gem-bestand

gem 'execjs'
gem 'therubyracer'

en dan rennen

bundle install

Alles werkt prima voor mij :)

Antwoord #4

Ik had een vergelijkbaar probleem: mijn Rails 3.1-app werkte goed op Windows, maar kreeg dezelfde fout als de OP bij het draaien op Linux. De oplossing die voor mij op beide platforms werkte, was het volgende toevoegen aan mijn Gemfile:

gem 'therubyracer', :platforms => :ruby

De truc is te weten dat :platforms => :ruby eigenlijk betekent gebruik deze gem alleen met "C Ruby (MRI) of Rubinius, maar NIET Windows."

Andere mogelijke waarden voor :platforms worden beschreven in de bundler man-pagina.

Ter informatie: Windows heeft een ingebouwde JavaScript-engine die execjs kan vinden. Op Linux is er geen ingebouwde, hoewel er verschillende beschikbaar zijn die men kan installeren. therubyracer is er een van. Andere worden vermeld in de execjs README.md.

Antwoord #5

Het toevoegen van de volgende gem aan mijn Gemfile loste het probleem op:

gem 'therubyracer'

Bundel dan je nieuwe afhankelijkheden:

bundle install

Antwoord #6

Een alternatieve manier is om gewoon te bundelen zonder de gem-groep die de dingen bevat die je niet hebt.

Doe dat ook:

bundle install --without assets

je hoeft het Gemfile helemaal niet aan te passen, mits je natuurlijk geen asset chain-dingen doet - wat meestal van toepassing is in niet-ontwikkelomgevingen. Bundle zal je '--without'-instelling onthouden in het .bundle/config-bestand.

Gerelateerde artikelen