see rails not error could ruby-on-rails-3.1 execjs javascript

ruby on rails 3.1 - rails - ExecJS y no pudo encontrar un tiempo de ejecución de JavaScript



could not find a javascript runtime see https github com rails execjs (14)

Estoy intentando usar la plantilla Mongoid / Devise Rails 3.1 ( Mongoid y Devise ), y me sigue ExecJS un error que indica que ExecJS no puede encontrar un tiempo de ejecución de JavaScript. Justo cuando no tenía ninguno instalado, pero he intentado instalar Node.js , Mustang y Ruby Racer , pero nada funciona.

No pude encontrar un tiempo de ejecución de JavaScript. Consulte sstephenson/ExecJS (GitHub) para obtener una lista de los tiempos de ejecución disponibles ( ExecJS::RuntimeUnavailable ).

¿Qué necesito hacer para que esto funcione?


Usuarios de Ubuntu

Estoy en Ubuntu 11.04 y tuve problemas similares. La instalación de Node.js lo arregló.

A partir de Ubuntu 13.04 x64 solo necesitas ejecutar:

sudo apt-get install nodejs

Esto solucionará el problema.

CentOS / RedHat Usuarios

sudo yum install nodejs


Añade las siguientes gemas en tu archivo de gemas

gem ''therubyracer'' gem ''execjs''

y correr

bundle install

estás listo :)


Agregar la siguiente gema a mi Gemfile resolvió el problema:

gem ''therubyracer''

Luego agrupa tus nuevas dependencias:

$ bundle install


Comencé a tener este problema cuando comencé a usar rbenv con Ruby 1.9.3, mientras que mi sistema ruby ​​es 1.8.7. La gema está instalada en ambos lugares, pero por alguna razón, el script de rieles no la detectó. Pero agregar los "execjs" y "therubyracer" al Gemfile hizo el truco.


En tu archivo de gemas, escribe

gem ''execjs'' gem ''therubyracer''

y luego correr

bundle install

Todo funciona bien para mí :)


En tu archivo de gemas. Descomenta esta línea.

19 # gema ''therubyracer'', plataformas:: ruby

Y ejecute bundle install

Estás listo para trabajar. :)


No uses RubyRacer ya que es malo en la memoria. Instalar Node.js como lo sugieren algunas personas aquí es una mejor idea.

Esta lista de tiempos de ejecución disponibles que puede ser utilizada por la Biblioteca ExecJs también documenta el uso de Node.js

sstephenson/ExecJS

Entonces, Node.js no es una solución excesiva y mucho mejor que usar RubyRacer.


Para Amazon Linux (AMI):

sudo yum install nodejs npm --enablerepo=epel



Solía ​​agregar el Ruby Racer al archivo Gem para solucionarlo. Pero hey, Node.js funciona!


Solo agregue ExecJS y Ruby Racer en su archivo gem y ejecute bundle install después.

gem ''execjs'' gem ''therubyracer''

Todo debería estar bien después.


Tuve el mismo error, pero solo en mi servidor de pruebas, no en mi entorno de producción. nodejs ya estaba instalado en ambos entornos.

Escribiendo:

which node

Descubrí que el comando de nodo estaba ubicado en: / usr / bin / node en producción pero: / usr / local / bin / node en la puesta en escena.

Después de crear un enlace simbólico en la puesta en escena es decir:

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

La aplicación luego trabajó en la puesta en escena.

Sin despeinarse sin problemas.


Tuve un problema similar: mi aplicación Rails 3.1 funcionó bien en Windows pero tuvo el mismo error que el OP cuando se ejecutó en Linux. La solución que me funcionó en ambas plataformas fue agregar lo siguiente a mi Gemfile :

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

El truco es saber que :platforms => :ruby realidad significa solo usar esta gema con "C Ruby (MRI) o Rubinius, pero NO con Windows".

Otros valores posibles para :platforms se describen en la página de manual de bundler .

FYI: Windows tiene un motor de JavaScript execjs que los execjs pueden localizar. En Linux no hay un componente incorporado, aunque hay varios disponibles que se pueden instalar. therubyracer es uno de ellos. Otros se enumeran en el execjs README.md .


Una forma alternativa es simplemente agrupar sin el grupo de gemas que contiene las cosas que no tienes.

Así que hazlo:

bundle install --without assets

no tiene que modificar el Gemfile en absoluto, dado que, por supuesto, no está haciendo cosas de la cadena de activos, lo que generalmente se aplica en entornos que no son de desarrollo. Bundle recordará su configuración ''--without'' en el archivo .bundle / config.