web-dev-qa-db-fra.com

Erreur lors de l'exécution de l'application Rails - ExecJS :: RuntimeError

J'ai essayé de faire cela sur Google et je n'ai pas encore trouvé de réponse à mon problème.

J'essaie d'exécuter un script de contrôleur simple via Rails et il me donne cette erreur lorsque j'atteins la page.

ExecJS::RuntimeError in Say#hello

Évidemment, Say est le contrôleur et bonjour est la méthode. Plus bas dans la page, je reçois plus d'informations sur l'erreur.

dyld: unknown required load command 0x80000022
(in /Users/JoeMoe/Sites/demoRails/app/assets/javascripts/say.js.coffee)

J'ai vérifié ce fichier et il n'y a rien à part le code commenté. Est-il censé y avoir quelque chose ici?

Voici ce qu'il y a dans le fichier say.js.coffee

# Place all the behaviors and hooks related to the matching controller here.
# All this logic will automatically be available in application.js.
# You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/

Plus bas sur la page, je vois que je peux faire une trace d'application qui me montre.

app/views/layouts/application.html.erb:6:in `_app_views_layouts_application_html_erb__169683399_21885150'

Je peux aussi faire la trace du cadre aussi. Cela va être une longue liste en passant.

execjs (1.2.9) lib/execjs/external_runtime.rb:129:in `exec_runtime'
execjs (1.2.9) lib/execjs/external_runtime.rb:27:in `block in exec'
execjs (1.2.9) lib/execjs/external_runtime.rb:40:in `compile_to_tempfile'
execjs (1.2.9) lib/execjs/external_runtime.rb:26:in `exec'
execjs (1.2.9) lib/execjs/external_runtime.rb:18:in `eval'
execjs (1.2.9) lib/execjs/external_runtime.rb:32:in `call'
coffee-script (2.2.0) lib/coffee_script.rb:57:in `compile'
tilt (1.3.3) lib/tilt/coffee.rb:46:in `evaluate'
tilt (1.3.3) lib/tilt/template.rb:76:in `render'
sprockets (2.0.3) lib/sprockets/context.rb:175:in `block in evaluate'
sprockets (2.0.3) lib/sprockets/context.rb:172:in `each'
sprockets (2.0.3) lib/sprockets/context.rb:172:in `evaluate'
sprockets (2.0.3) lib/sprockets/bundled_asset.rb:171:in`build_dependency_context_and_body'
sprockets (2.0.3) lib/sprockets/bundled_asset.rb:135:in `dependency_context'
....

Il y en a plus mais c'est une liste assez longue et je ne veux pas vous ennuyer. Faites-moi savoir si vous avez besoin de la liste complète et je la collerai.

J'utilise Mac OS X avec les fichiers suivants: - Ruby 1.9.2 - Rails 3.1.0 - Gem 1.8.10 - sqlite3 3.7.9

17
JoeMoe1984

vous devez installer une gemme supplémentaire pour javascript. éditez gfichier et ajoutez gem 'therubyracer'. Vous pouvez ensuite exécuter bundle pour installer la nouvelle gemme.

voici votre solution en détail: http://www.railszilla.com/2011/12/Rails-3-coffescript-execjs/

20
RailsZilla

Ça m'est aussi arrivé! Vous devez installer " nodejs ". En travaillant avec Ubuntu Linux, j'ai: 

apt-get install nodejs 

Source: http://forums.pragprog.com/forums/148/topics/9665#posts-26576 (message de Sam Ruby)

18
Martin

Si vous rencontrez ce problème sur le serveur de production, cela peut être dû à l'utilisation de la mémoire. Lors de la précompilation des ressources, le serveur utilise beaucoup de mémoire.

consider restarting your production server. 
5
Aleem

Aucun de ce qui précède n'a fonctionné pour moi. . . J'ai installé gem 'coffee-script-source', '1.8.0'.

Ensuite, l'application a démarré sans aucun problème.

2
ajinkya Jahagirdar

Il semblerait que vous manquiez de quelques joyaux.

Ajoutez à votre Gemfile:

gem 'therubyracer'
gem 'execjs'

Et puis exécutez $ bundle install pour les installer.

0
PanXo