Rails - Não foi possível encontrar um tempo de execução JavaScript?

247

Criei um novo projeto Rails usando rails 3.1.0.rc4na minha máquina local, mas quando tento iniciar o servidor, recebo: Não foi possível encontrar um tempo de execução JavaScript. Veja aqui uma lista dos tempos de execução disponíveis. ( ExecJS::RuntimeUnavailable)

Nota: Não se trata do Heroku.

Michael Durrant
fonte

Respostas:

475

A instalação de uma biblioteca de tempo de execução javascript, como o nodejs, resolve isso

Para instalar o nodejs no ubuntu, você pode digitar o seguinte comando no terminal:

sudo apt-get install nodejs

Para instalar o nodejs em sistemas usando yum, digite o seguinte no terminal:

yum -y install nodejs
theTuxRacer
fonte
14
para mim também. sudo apt-get install nodejs.
Hertzel Guinness
1
Agora eu recomendo isso como o caminho a seguir. Veja acima.
Michael Durrant
1
nota removido na resposta sobre a instalação do nó através do centro de software do Ubuntu, uma vez que não estava lá (Ubuntu 12.04)
Michael Durrant
1
O Ubuntu 64 está dando um grande problema para instalar o therubyracer, nem mesmo a última versão, 0.11.1, resolveu isso. Essa resposta me ajudou nisso.
Eduardo
@gwho Há uma resposta abaixo de Yang. Dê uma olhada nisso.
TheTuxRacer
44

Nota de Michael 28/12/2011 - Alterei minha aceitação deste (rubytheracer) para acima (nodejs), pois o therubyracer tem problemas de tamanho de código. Heroku agora o desencoraja fortemente . Funcionará, mas pode ter problemas de tamanho / desempenho.

Se você adicionar um tempo de execução, como therubyracer, ao seu Gemfile e executar o pacote, tente iniciar o servidor que deve funcionar.

gem 'therubyracer'

É necessário um tempo de execução javascript para compilar o coffeescript e também para o uglifier.

Atualização, 12/12/2011: algumas pessoas encontraram problemas com o rubytheracer (acho que era principalmente o tamanho do código). Eles descobriram que execjs (ou nodejs) funcionavam tão bem (se não melhor) e eram muito menores.

Nota: Coffeescript se tornou um padrão para 3.1+

Gazler
fonte
3
Também é usado para compactar JavaScript com o UglifyJS. Observe que a maneira recomendada de executar essas tarefas é executá-las em desenvolvimento rake assets:precompilee, em seguida, adicionar ativos ao seu repositório; O Rails 3.1 não exigirá realmente um tempo de execução JavaScript em produção no momento do lançamento.
whitequark
1
Eu marquei isso como a resposta. Foi um pouco cabeludo, pois isso não foi corrigido imediatamente e eu também estava tentando novos aplicativos com 3.0.9 e 3.0.4, mas obtive erros (diferentes) com eles. Finalmente, eu fiz um novo aplicativo novamente - e também peguei o rails rc5, adicionei o rubytheracer e fiz uma pequena atualização e, finalmente, posso colocar o servidor em funcionamento. Obrigado Gazier!
precisa
1
btw O aplicativo padrão de trilhos que é criado usa o uglifier, que também exige isso, acredito.
Michael Durrant
1
Eu acho uma boa prática poderia ser colocá-lo no Gemfile sob o grupo de desenvolvimento, algo como group :development do gem 'therubyracer' end
eveevans
@eveevans, o tempo de execução não pode ser encontrado. O ativo é compilado no ambiente de produção, portanto o disparador deve estar sob o bloco de env de produção.
Lulalala 11/07/2012
27

Adicione as seguintes jóias no seu arquivo gem

gem 'therubyracer'
gem 'execjs'

e corra

bundle install

OU

Instale o Node.js para corrigi-lo permanentemente em todos os projetos.

Ramiz Raja
fonte
1
Isso funcionou para mim (Linux Mint 16), acho que na versão mais recente do rails perde algumas das dependências.
precisa saber é o seguinte
15

sudo apt-get install nodejsNao funciona para mim. Para fazê-lo funcionar, eu tenho que fazer o seguinte:

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 isso ajude alguém com o mesmo problema que eu.

vôo
fonte
doenst trabalho para mim o PPA add-apt-repository: chris-lea / Node.js
jpganz18
@ jpganz18 tentar este primeiro: sudo apt-get install software-properties-common Se isso não resolver o problema, você pode instalá-lo manualmente: blog.anantshri.info/howto-add-ppa-in-debian
Robin
6

Na plataforma Windows, eu também encontrei esse problema. A solução para mim é apenas adicionar

C:\Windows\System32

para o CAMINHO

e reinicie o computador.

Yang
fonte
3

Eu tive esse problema em uma máquina Windows e instalar o node.js foi a solução que finalmente funcionou para mim. Isso ocorreu depois de tentar várias outras rotas, incluindo a tentativa de obter o 'therubyracer' funcionando. Embora o github para node.js sugira que a instalação no Windows ainda seja instável, o site http://nodejs.org/ tinha um instalador do Windows que funcionava perfeitamente.

Edub Kendo
fonte
1

Se tudo falhar, você pode tentar

# aptitude install nodejs

como raiz. Você pode testar sua instalação com o seguinte comando:

# node -v

Se você deseja instalar o NPM, consulte o seguinte link . Espero que ajude.

user3576216
fonte
0

No CentOS 6.5, o seguinte funcionou para mim:

sudo yum install -y nodejs
Bob Stine
fonte
0

Instale um tempo de execução Javascript

O erro é causado pela ausência de um tempo de execução Javascript na sua máquina local. Para resolver isso, você precisará instalar o NodeJS.

É possível instalar o NodeJS por meio do Node Version Manager ou nvm :

Primeiro, instale nvm:

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

Instale o Nó através de nvm:

nvm install 5.9.1

Isso instalará a versão 5.9.1do nó.

gnerkus
fonte
0

Corri para esse problema usando o Phusion Passenger (executando como um módulo nginx) em um servidor Redhat. Já tínhamos um tempo de execução Javascript instalado. Outros aplicativos Rails no mesmo diretório pai funcionaram bem.

Aconteceu que tivemos um problema de permissão. Execute "ls -l" e veja se a pasta tem o mesmo proprietário e grupo que outros aplicativos em funcionamento no sistema. Eu tive que executar chown e chgrp na pasta (com a opção recursiva) para corrigi-lo.

Patrick
fonte
0

Espero que você tenha nodejs pré-instalado || nmv.

Minha solução não requer configuração de gem ou instalação de 'node com sudo apt" quando você já possui o nvm.

Tudo o que você precisa é editar o DesctopEntry do RubyMine. para isso teremos esses pequenos passos:

  1. Vamos para usr/share/applications
  2. Abrir em qualquer editor (eu uso o vim) Rubymine DesktopEntryvim RubyMine
  3. Edite a linha 6 (começa com Exec). Você deve adicionar ao começo /bin/bash -i -c. Portanto, sua linha deve ficar assim Exec=/bin/bash -i -c "/home/USERNAME/rubymine/RubyMine-2019.1.2/bin/rubymine.sh" %f
  4. Feito! Você é glorioso!

Como um benefício, todas as suas variáveis ​​de ambiente estão agora disponíveis para o RubyMine. Então você não sente dor ao adicioná-los.

Ivan Kevich
fonte