Node.js no encontrado por Rails / execjs

He instalado node.js al comstackrlo e instalarlo desde el usuario root. Creo que este es quizás el lugar donde está el hangup. Desde el usuario que ejecuta la aplicación Rails, verifiqué por node.js.

$ which node /usr/local/bin/node 

Cuando lancé mi aplicación Rails (Rails 3.2.9) recibí el mensaje universalmente poco útil “Lo sentimos, pero algo salió mal”. Al revisar el registro de errores de producción, vi que no se encontró el tiempo de ejecución de Javascript. Eso es confuso ya que obviamente está instalado. Así que fui a forzar el tiempo de ejecución de JavaScript de Node. Edité config / boot.rb para incluir:

 ENV['EXECJS_RUNTIME'] = 'Node' 

Revisé mi aplicación de nuevo, mientras miraba el registro de producción. Esta vez me salió el error.

 ActionView::Template::Error (Node.js (V8) runtime is not available on this system 

Sigo confundido. Fui a la gem execjs y cambié el comando de tiempo de ejecución a la ruta exacta instalada.

 Node = ExternalRuntime.new( :name => "Node.js (V8)", :command => "/usr/local/bin/node", :runner_path => ExecJS.root + "/support/node_runner.js", :encoding => 'UTF-8' ) 

Todavía me sale el mismo error. El usuario ha instalado y accesible el nodo, pero parece que las gems / Rails no pueden usarlo. El servidor se ejecuta CentOS 6.3. El archivo javascript específico que causa que se lance el error es jquery.nivo.slider.pack.js. Que no edité después de descargarlo desde nivo.

He tenido problemas similares al instalar nodejs con código fuente en mi sistema centos 6.3. Se instaló con éxito, pero sigo fallando en la comstackción de mis activos de la aplicación ror hasta que configuré explícitamente la RUTA en donde se instaló (nodejs)

[root] # make install

instalando /usr/local/lib/node_modules/npm/html/doc/folders.html
symlinking ../lib/node_modules/npm/bin/npm-cli.js -> / usr / local / bin / npm
actualizando shebang de / usr / local / bin / npm a / usr / local / bin / node

[raíz] # export PATH = / usr / local / bin: $ PATH

Ahora funciona. ¡Espero que ayude!

Entonces, tengo Ruby 2.0.0 instalado y Rails 4.0.2 en CentOS 5.10 usando Apache2 con Passenger. Mi primer paso que intenté fue abrir la consola de Rails y escribir el siguiente comando:

 ExecJS.runtime 

Devolvió el siguiente valor:

#

Lo que significaba que ese nodo se había instalado y detectado, pero por alguna razón no estaba funcionando.

Entonces, probé el ejemplo en el sitio web:

 ExecJS.eval("'red yellow blue'.split(' ')") 

Y obtuve la respuesta correcta. Entonces, ahora me pregunto por qué el Pasajero no lo está recogiendo.

Entonces, noté que el pasajero muestra la variable de ruta y se ve así:

/home/foo/vendor/bundle/ruby/2.0.0/bin:/usr/local/rvm/gems/ruby-2.0-p481/bin:/usr/local/rvm/gems/ruby-2.0.0 -p481 @ global / bin: /usr/local/rvm/rubies/ruby-2.0.0-p481/bin: / usr / kerberos / bin: / sbin: / usr / sbin: / bin: / usr / bin: / usr / local / rvm / bin: / home / foo / bin

Pero, parece que falta el usr/local/bin . No soy un experto en Linux, así que para mí la forma más fácil de solucionar esto es con un enlace simbólico. Entonces, ejecuto ln -s /usr/local/bin/node /usr/bin/node . Es posible que desee tener en cuenta que encontré la ruta a mi nodejs usando el comando find / -name node .

Luego actualicé mi aplicación web y no sabría que funcionó. Entonces, si funcionó para mí, espero que pueda ayudar a alguien más.

ACTUALIZACIÓN (probablemente mejor manera): esta es probablemente una mejor manera de hacerlo. Podemos comstackrlo de código fuente así:

 mkdir ~/install cd ~/install wget https://nodejs.org/dist/v7.2.1/node-v7.2.1.tar.gz tar xvf node-v7.2.1.tar.gz cd node-v7.2.1 ./configure --prefix=/usr/ make && make install 

De esta manera, Node.js se instalará en la ruta donde Passenger espera que esté.

No sé si esto ayudará, pero compruebe su $ PATH que el nodo está allí. Además, debe utilizar rvm si desea utilizar el nodo. Compruebe que la instalación de su nodo se realiza correctamente.