Rails: ¿no pudo encontrar un tiempo de ejecución de JavaScript?


247

Creé un nuevo proyecto de Rails usando rails 3.1.0.rc4mi máquina local, pero cuando intento iniciar el servidor obtengo: No pude encontrar un tiempo de ejecución de JavaScript. Vea aquí una lista de tiempos de ejecución disponibles. ( ExecJS::RuntimeUnavailable)

Nota: Esto no se trata de Heroku.


Respuestas:


475

Instalar una biblioteca de tiempo de ejecución de javascript como nodejs resuelve esto

Para instalar nodejs en ubuntu, puede escribir el siguiente comando en la terminal:

sudo apt-get install nodejs

Para instalar nodejs en sistemas que usan yum, escriba lo siguiente en el terminal:

yum -y install nodejs

14
para mí también. sudo apt-get install nodejs.
Hertzel Guinness

1
Ahora recomiendo esto como la ruta a seguir. Véase más arriba.
Michael Durrant

1
Nota eliminada en la respuesta sobre la instalación del nodo a través del centro de software de Ubuntu ya que no estaba allí (Ubuntu 12.04)
Michael Durrant

1
Ubuntu 64 está dando un gran problema para instalar Therubyracer, ni siquiera la última versión, 0.11.1, resolvió eso. Esta respuesta me ayudó en eso.
Eduardo

@gwho Hay una respuesta a continuación de Yang. Mira eso.
theTuxRacer

44

Nota de Michael 28/12/2011 - He cambiado mi aceptación de esto (rubytheracer) a arriba (nodejs) ya que therubyracer tiene problemas de tamaño de código. Heroku ahora lo desalienta fuertemente . Funcionará, pero puede tener problemas de tamaño / rendimiento.

Si agrega un tiempo de ejecución, como therubyracer a su Gemfile y ejecuta el paquete, intente iniciar el servidor, debería funcionar.

gem 'therubyracer'

Se requiere un tiempo de ejecución de JavaScript para compilar coffeescript y también para uglifier.

Actualización, 12/12/2011: Algunas personas encontraron problemas con rubytheracer (creo que era principalmente del tamaño del código). Encontraron que execjs (o nodejs) funcionaban igual de bien (si no mejor) y eran mucho más pequeños.

nb Coffeescript se convirtió en un estándar para 3.1+


3
También se usa para comprimir JavaScript con UglifyJS. Tenga en cuenta que la forma recomendada de realizar estas tareas es realizarlas en desarrollo con rake assets:precompiley luego agregar activos a su repositorio; Rails 3.1 en realidad no requerirá un tiempo de ejecución de JavaScript en producción en el momento del lanzamiento.
whitequark

1
He marcado esto como la respuesta. Fue un poco complicado ya que esto no lo solucionó de inmediato y también estaba probando nuevas aplicaciones con 3.0.9 y 3.0.4, pero obtuve errores (diferentes) con ellas. Finalmente hice una nueva aplicación nuevamente, y también obtuve rails rc5 con ella y agregué el rubytheracer e hice una actualización bunlde y finalmente puedo poner el servidor en funcionamiento. Gracias Gazier!
Michael Durrant

1
Por cierto, la aplicación de rieles estándar que se crea usa uglifier, que también requiere esto, creo.
Michael Durrant

1
Creo que una buena práctica podría incluirse en el archivo de gemas del grupo de desarrollo, algo así como group :development do gem 'therubyracer' end
2011

@eveevans el tiempo de ejecución no se puede encontrar error. El activo se compila en el entorno de producción, por lo que el termubirador debe estar bajo el bloque de producción.
lulalala

27

Agregue las siguientes gemas en su archivo de gemas

gem 'therubyracer'
gem 'execjs'

y correr

bundle install

O

Instale Node.js para arreglarlo permanentemente para todos los proyectos.


1
Esto funcionó para mí (Linux Mint 16), creo que en la última versión de rails se pierden algunas de las dependencias.
geminiCoder

15

sudo apt-get install nodejsno funciona para mi Para que funcione, tengo que hacer lo siguiente:

sudo apt-get install python-software-properties
sudo add-apt-repository ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get install nodejs

Espero que esto ayude a alguien que tiene el mismo problema que yo.


doenst funciona para mí el add-apt-repository ppa: chris-lea / node.js
jpganz18

@ jpganz18 intente esto primero: sudo apt-get install software-properties-common si esto no resuelve el problema, puede instalarlo manualmente: blog.anantshri.info/howto-add-ppa-in-debian
Robin

6

En la plataforma de Windows, también encontré ese problema. La solución para mí es simplemente agregar

C:\Windows\System32

al CAMINO

y reinicie la computadora.


3

Tuve este problema en una máquina con Windows e instalar node.js fue la solución que finalmente funcionó para mí. Esto se produjo después de probar varias otras rutas, incluido el intento de hacer funcionar el 'therubyracer'. Aunque el github para node.js sugiere que la instalación en Windows todavía es inestable, el sitio web en http://nodejs.org/ tenía un instalador de Windows que funcionaba perfectamente.



1

Si todo falla puedes intentarlo

# aptitude install nodejs

como raíz Puede probar su instalación con el siguiente comando:

# nodo -v

Si desea instalar NPM, consulte el siguiente enlace . Espero eso ayude.


0

En CentOS 6.5, lo siguiente funcionó para mí:

sudo yum install -y nodejs

0

Instalar un tiempo de ejecución de Javascript

El error es causado por la ausencia de un tiempo de ejecución de Javascript en su máquina local. Para resolver esto, necesitará instalar NodeJS.

Puede instalar NodeJS a través del Node Version Manager o nvm :

Primero, instale nvm:

$ curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.0/install.sh | bash

Instalar Nodo a través de nvm:

nvm install 5.9.1

Esto instalará la versión 5.9.1de Node.


0

Me encontré con este problema usando Phusion Passenger (que se ejecuta como un módulo nginx) en un servidor Redhat. Ya teníamos instalado un tiempo de ejecución de Javascript. Otras aplicaciones de Rails en el mismo directorio principal funcionaron bien.

Resultó que teníamos un problema de permisos. Ejecute "ls -l" y vea si la carpeta tiene el mismo propietario y grupo que otras aplicaciones de trabajo en el sistema. Tuve que ejecutar chown y chgrp en la carpeta (con el interruptor recursivo) para solucionarlo.


0

Espero que haya preinstalado nodejs || nmv.

Mi solución no requiere la instalación de gemas o la instalación de 'node with sudo apt" cuando ya tienes nvm.

Todo lo que necesitas es editar DesctopEntry de RubyMine. para eso tendremos esos pequeños pasos:

  1. Ir usr/share/applications
  2. Abrir en cualquier editor (uso vim) Rubymine DesktopEntryvim RubyMine
  3. Edite la línea 6 (comienza con Exec). Deberías agregar al principio /bin/bash -i -c. Entonces tu línea debería verse así Exec=/bin/bash -i -c "/home/USERNAME/rubymine/RubyMine-2019.1.2/bin/rubymine.sh" %f
  4. ¡Hecho! Eres glorioso!

Como beneficio, todas sus variables de entorno ahora están disponibles para RubyMine. Entonces no sientes dolor al agregarlos.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.