web-dev-qa-db-fra.com

ExecJS :: RuntimeError sous Windows essayant de suivre des instructions

UPDATE: suggestion de Colin de supprimer la ligne // = require_tree. a résolu le problème.

Pendant deux jours, j’ai perdu du temps à suivre chaque suggestion et à régler mon problème. J'essaie de suivre le livre http://Ruby.railstutorial.org sur la machine Windows et je ne peux pas, pour ma vie, dépasser la vilaine erreur suivante.

ExecJS::RuntimeError in Static_pages#home

Showing C:/Users/.../bootcamp-sample-app/app/views/layouts/application.html.erb where line #6 raised:

["ok","(function() {\n\n\n\n}).call(this);\n"]
(in C:/Users/.../bootcamp-sample-app/app/assets/javascripts/sessions.js.coffee)
Extracted source (around line #6):

3: <head>
4:   <title><%= full_title(yield(:title)) %></title>
5:   <%= stylesheet_link_tag    "application", media: "all" %>
6:   <%= javascript_include_tag "application" %>
7:   <%= csrf_meta_tags %>
8:   <%= render 'layouts/shim' %>
9: </head>
Rails.root: C:/Users/.../bootcamp-sample-app

Application Trace | Framework Trace | Full Trace
app/views/layouts/application.html.erb:6:in `_app_views_layouts_application_html_erb___487732698_30422172'
Request

J'ai essayé toutes les suggestions, y compris l'installation de nodejs avec msi, l'utilisation de execjs 1.3.0 et d'autres choses dont je ne me souviens même plus. Voici le fichier gem

source 'https://rubygems.org'

gem 'Rails', '3.2.8'
gem 'bootstrap-sass', '2.0.0'
gem 'bcrypt-Ruby', '3.0.1'
gem 'faker', '1.0.1'
gem 'will_paginate', '3.0.3'
gem 'bootstrap-will_paginate', '0.0.6'

group :development, :test do
  gem 'sqlite3', '1.3.5'
  gem 'rspec-Rails', '2.10.0'
  gem 'guard-rspec', '0.5.5'
  gem 'guard-cucumber'
end

group :development do
  gem 'annotate', '2.5.0'
end


# Gems used only for assets and not required
# in production environments by default.
group :assets do
  gem 'sass-Rails'
  gem 'coffee-Rails'
  gem 'coffee-script'
  gem 'uglifier'
end

gem 'jquery-Rails', '2.0.2'

gem 'execjs'

# Gems on Linus/Mac
#gem 'therubyracer'


group :test do
  gem 'capybara', '1.1.2'
  gem 'guard-spork', '0.3.2'
  gem 'spork', '0.9.0'
  gem 'factory_girl_Rails', '1.4.0'
  gem 'cucumber-Rails', '1.2.1', require: false
  gem 'database_cleaner', '0.7.0'


# Test gems on Linux
#  gem 'rb-inotify', '0.8.8'
#  gem 'libnotify', '0.5.9'

# Test gems on Macintosh OS X
#  gem 'Selenium-webdriver', '~> 2.22.0'
#  gem 'rb-fsevent', '0.9.1', :require => false
#  gem 'growl', '1.0.3'

# Test gems on Windows
# gem 'rb-fchange', '0.0.5'
# gem 'rb-notifu', '0.0.4'
# gem 'win32console', '1.3.0'
end

group :production do
#  gem 'therubyracer'
  gem 'pg', '0.12.2'
end

# To use ActiveModel has_secure_password
# gem 'bcrypt-Ruby', '~> 3.0.0'

# To use Jbuilder templates for JSON
# gem 'jbuilder'

# Use Unicorn as the app server
# gem 'Unicorn'

# Deploy with Capistrano
# gem 'capistrano'

# To use debugger
#gem 'debugger''

et voici le sessions.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/

application.js

// This is a manifest file that'll be compiled into application.js, which will include all the files
// listed below.
//
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
// or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
//
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
// the compiled file.
//
// WARNING: THE FIRST BLANK LINE MARKS THE END OF WHAT'S TO BE PROCESSED, ANY BLANK LINE SHOULD
// GO AFTER THE REQUIRES BELOW.
//
//= require jquery
//= require jquery_ujs
//= require_tree .
//= require bootstrap

application.html.erb

<!DOCTYPE html>
 <html>
 <head>
   <title><%= full_title(yield(:title)) %></title>
   <%= stylesheet_link_tag    "application", media: "all" %>
   <%= javascript_include_tag "application" %>
   <%= csrf_meta_tags %>
   <%= render 'layouts/shim' %>
 </head>
 <body>
 <%= render 'layouts/header' %>
 <div class="container">
   <%= yield %>
   <%= render 'layouts/footer' %>
 </div>
 </body>
 </html>

Voici le contenu de la console

Processing by StaticPagesController#home as HTML
  Rendered static_pages/home.html.erb within layouts/application (45.0ms)
Completed 500 Internal Server Error in 1136ms

ActionView::Template::Error (["ok","(function() {\n\n\n\n}).call(this);\n"]
  (in C:/Users/.../bootcamp-sample-app/app/assets/javascripts/sessions.js.coffee)):
    3: <head>
    4:   <title><%= full_title(yield(:title)) %></title>
    5:   <%= stylesheet_link_tag    "application", media: "all" %>
    6:   <%= javascript_include_tag "application" %>
    7:   <%= csrf_meta_tags %>
    8:   <%= render 'layouts/shim' %>
    9: </head>
  app/views/layouts/application.html.erb:6:in `_app_views_layouts_application_html_erb___487732698_30422172'


  Rendered C:/RailsInstaller/Ruby1.9.3/lib/Ruby/gems/1.9.1/gems/actionpack-3.2.8/lib/action_dispatch/middleware/templates/rescues/_trace.erb (2.0ms)
  Rendered C:/RailsInstaller/Ruby1.9.3/lib/Ruby/gems/1.9.1/gems/actionpack-3.2.8/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (1.0ms)
  Rendered C:/RailsInstaller/Ruby1.9.3/lib/Ruby/gems/1.9.1/gems/actionpack-3.2.8/lib/action_dispatch/middleware/templates/rescues/template_error.erb within rescues/layout (34.0ms)

J'ai installé Devkit et essayé plusieurs pierres précieuses, mais je vous prie de suggérer des modifications qui pourraient m'aider à développer des fenêtres. J'ai utilisé rubyinstaller pour tout.

Qu'est-ce que je rate?

101
user1687078

Mon ami tentait un Rails tutoriel sur Win 8 RTM il y a quelques mois et a rencontré cette erreur. Je ne suis pas sûr que ce problème existe également dans Windows 7 , mais cela peut aider.

Options:

1) Supprimer //= require_tree ./Ignorant le problème - Comme l'a dit ColinR ci-dessus, cette ligne ne devrait pas être à l'origine d'un problème. Il y a un problème réel avec le fonctionnement correct d'ExecJS avec le moteur d'exécution JavaScript sur votre système et la suppression de cette ligne ignore simplement ce fait.

2) Installation de Node.js/Fugue - De nombreuses personnes semblent finir par installer Node.js et l’utiliser à la place du moteur d’exécution JavaScript déjà présent sur leur ordinateur. système. Bien que cette option soit valide, elle nécessite également un logiciel supplémentaire et évite uniquement le problème d'origine, à savoir qu'ExecJS ne fonctionne pas correctement avec le moteur d'exécution JavaScript déjà installé sur votre système. Si le moteur d'exécution JavaScript existant sur votre système est censé fonctionner, pourquoi ne pas le faire fonctionner au lieu d'installer plus de logiciels? Selon le créateur d'ExecJS, le moteur d'exécution déjà intégré à Windows est en fait pris en charge ...

ExecJS vous permet d'exécuter du code JavaScript à partir de Ruby. Il sélectionne automatiquement le meilleur runtime disponible pour évaluer votre programme JavaScript, puis vous renvoie le résultat sous forme d'objet Ruby.

ExecJS supporte ces runtimes:

  • therubyracer - Google V8 intégré à Ruby
  • therubyrhino - Mozilla Rhino intégré à JRuby
  • Node.js
  • Apple JavaScriptCore - Inclus avec Mac OS X
  • Hôte de script Microsoft Windows (JScript)

(de github.com/sstephenson/execjs#execjs)

3) Résoudre réellement le problème/Apprentissage - Utilisez les connaissances des options 1 et 2 pour rechercher d'autres solutions. Je ne peux pas vous dire combien de pages Web que j'ai fermées après avoir vu les options 1 ou 2 étaient la solution acceptée avant de trouver des informations sur le problème fondamental que nous rencontrions. La seule raison pour laquelle nous avons continué à regarder était que nous ne pouvions pas croire que Rails (1) insère une ligne de code dans chaque projet généré par un échafaudage qui cause un problème, ou (2) exige que nous installons des logiciels supplémentaires uniquement pour exécuter cette ligne de code par défaut, ce qui nous a finalement permis de résoudre notre problème fondamental (vos miles peuvent varier).

Le correctif qui a fonctionné pour nous: Sur le système rencontrant des problèmes, recherchez le fichier runtimes.rb d'ExecJS fichier. Cela ressemble à this . Faites une copie du fichier trouvé pour la sauvegarde. Ouvrez le fichier runtimes.rb d'origine pour le modifier. Trouvez la section qui commence par la ligne JScript = ExternalRuntime.new(. Dans cette section, sur la ligne contenant :command => "cscript //E:jscript //Nologo //U", - retirer le //U seulement. Puis sur la ligne contenant :encoding => 'UTF-16LE' # CScript with //U returns UTF-16LE - remplace l'UTF-16LE par UTF-8. Enregistrez les modifications dans le fichier. Cette section du fichier devrait maintenant se lire:

JScript = ExternalRuntime.new(
    :name        => "JScript",
    :command     => "cscript //E:jscript //Nologo",
    :runner_path => ExecJS.root + "/support/jscript_runner.js",
    :encoding    => 'UTF-8' # CScript with //U returns UTF-16LE
)

Ensuite, arrêtez puis redémarrez votre serveur Rails) et actualisez la page de votre navigateur qui a généré l'erreur d'origine. Si tout va bien, la page se charge sans erreur maintenant. Voici le fil de discussion d'ExecJS où nous avons initialement publié nos résultats: https://github.com/sstephenson/execjs/issues/81#issuecomment-9892952

Si cela ne résout pas le problème, vous pouvez toujours écraser le fichier runtimes.rb modifié avec la copie de sauvegarde que vous avez (espérons-le) créée et tout reviendra à la case départ. Dans ce cas, considérez l'option 3 et continuez votre recherche. Dites-nous ce qui fonctionnera éventuellement pour vous. À moins que ce ne soit pour supprimer le require_tree ou pour installer node.js, il en existe déjà beaucoup. :)

240
Kevin P

Avait le même problème OS- Windows 8 Erreur- 'ExecJS :: RuntimeError ...' Solution- manquant Node.js

  1. installez Node.js à partir de http://www.nodejs.org/download/
  2. Redémarrer le PC
14
snassr

J'avais ce problème et je parcourais Internet. J'utilise Windows 8 avec ceci Rails gem)

source 'https://rubygems.org'

gem 'Rails', '3.2.9'

# Bundle Edge Rails instead:
# gem 'Rails', :git => 'git://github.com/Rails/rails.git'

group :development do gem 'sqlite3', '1.3.5' 
end

# Gems used only for assets and not required # in production environments by default. 

group :assets do 
    gem 'sass-Rails', '3.2.5' 
    gem 'coffee-Rails', '3.2.2'

gem 'uglifier', '1.2.3' 
end

gem 'jquery-Rails', '2.0.2'

group :production do 
    gem 'pg', '0.12.2' 
end

Je suis allé à http://nodejs.org/download/ installé - a redémarré la machine et tout a fonctionné.

12
gustavoanalytics

Je privilégiais la voie Learning . Il semble que le problème découle de

IO.popen(command, options) { |f| output = f.read }

renvoyer une chaîne vide dans execjs\external_runtine.rb _ (ligne 173 de la version 1.4.0). C'est pourquoi le message d'erreur ne contient aucun texte. Les changements suggérés ne fonctionnaient pas pour moi. J'ai changé UTF-16LE à UTF-8, mais il a quand même renvoyé une chaîne vide. J'ai enlevé \\U du command - ce texte a au moins renvoyé du texte, mais le codage était incorrect - dans le navigateur, il s’affichait en caractères chinois.

Selon cet article de blog MSDN , en utilisant le //U flag et la redirection vers un fichier force cscript à renvoyer le résultat en utilisant UTF-16.

Et puis, comme par magie, cela a fonctionné ( @ #% $ & ^ @ $% !!!?!?!) En utilisant command comme "cscript //E:jscript //Nologo" et encoding comme "UTF-8". Tant pis.

5
cofiem

Pour les utilisateurs de Windows, cela peut fonctionner. Coffee-script-source> 1.9.0 s'exécute sous Windows.

Il semble que vous deviez ajouter ceci à votre fichier gem:

gem 'coffee-script-source', '1.8.0'

alors fais

mise à jour du paquet coffee-script-source

J'ai essayé toutes les options ci-dessus, et aussi mélangé quelques combinaisons, jusqu'à ce que je trouve ceci Rails-4, ExecJS :: ProgramError dans Pages # bienvenue et j'avais fait plusieurs mises à jour de gem système et installation de bundles et mises à jour.

J'ai annulé tous mes essais et rétrogradé mon café-script-source et cela fonctionne. Publier ici pour aider les autres, qui peuvent avoir un problème similaire.

Mise à jour des fichiers dans vendor/cache

coffee-script-source-1.8.0.gem Suppression des fichiers .gem obsolètes de vendeur/cache coffee-script-source-1.9.1.1.gem Le paquet a été mis à jour!

4
DJSampat

Je devais ajouter mon dossier nodejs à ma variable d'environnement Windows Path. Dans Windows 8, ouvrez le Panneau de configuration, accédez à Système, Paramètres système avancés (à gauche), cliquez sur Variables d'environnement à gauche, puis modifiez la variable Path pour inclure le répertoire dans votre dossier nodejs (probablement dans Program Files).

Bien entendu, vous devez avoir installé Node.js (utilisez le Windows installer ) et installé CoffeeScript via NPM.

4
Evan

Je sais que la réponse à cette question est très tardive, mais j’ai adopté une démarche similaire et j’ai exploré en profondeur la cause réelle du problème.

Il s’est avéré que le moteur jScript de Windows par défaut est toujours sur es3 et que de nombreux joyaux tirent parti des fonctionnalités es5 ou es6. Malheureusement, si cela se produit (vous utilisez une gemme ou un morceau de code exploitant les fonctionnalités es5 ou es6), il n’existe aucun moyen de le laisser fonctionner sous Windows avec le moteur js natif.

C’est la raison pour laquelle installer node.js résout le problème (le noeud est au moins es5).

J'espère que cela pourra aider certaines personnes aux prises avec une erreur d'exécution de jsexec.

Je vous conseille d'installer le nœud (très facilement) ou d'installer la v8 sans retirer le // = require_tree.

Note execjs utilisera automatiquement le noeud s'il est détecté. Sinon forcer son utilisation, en ajoutant au démarrage quelque chose comme:

ENV['EXECJS_RUNTIME'] = 'Node'

Pour définir env sur node.

4
Dinuz

Pour les débutants comme moi:

  1. Accédez à\app\views\layouts\application.html.erb
  2. Changer la ligne 6 de:

    '<% = javascript_include_tag' application ',' data-turbolinks-track '=> true%>'

à

<%= javascript_include_tag 'defaults', 'data-turbolinks-track' => true %>

Source du tutoriel à corriger ici

3
Leandro P.

Solution rapide et sale: supprimez //= require_tree . de application.js.

Comme je l'explique dans les commentaires de la question, cela ne résout pas le problème sous-jacent à l'origine de l'erreur, mais le contourne simplement.

2
Colin R

J'ai utilisé la solution numéro 2 parce que précédemment j'avais cette erreur, mais dans cette ocation ne fonctionnait pas, alors j'ai ajouté le

gem 'coffee-script-source', '1.8.0'

et courir

bundle install

et mon problème a été résolu

2
Yuliem Alavez

Voici une solution moins compliquée, pour les débutants:

Si vous ne faites que suivre le didacticiel, vous travaillez probablement avec le Gemfile par défaut (ou presque). Vous pouvez l'ouvrir dans votre éditeur de texte et supprimer le signe dièse situé au début de cette ligne:

# gem 'therubyracer', :platforms => :Ruby

Vous devrez relancer bundle install, qui téléchargera probablement quelques petites choses. Mais une fois que cela se produit, vous devriez pouvoir démarrer le serveur sans problème.

Au moins, cela a fonctionné pour moi.

Cela fonctionne également sur Ubuntu 12.04, d'ailleurs.

1
Karl Giesing

Avez-vous changé l'emplacement de votre code de C:\Utilisateurs\cet-utilisateur\yo-app?

Quand j'étais jeune dans Rails J'ai créé une application et l'emplacement par défaut de mon application était C:\Utilisateurs\Duncan\mon-application, puis, lorsque je a changé mon application et l'a placée dans le dossier D:\All-my-Apps. J'avais cette erreur ....

Je me suis gratté la tête, essayé 1,2,3 et plus ..... rien! Jusqu'à ce que je renvoie tout le code à l'emplacement du dossier par défaut et à mon grand étonnement, je roulais à nouveau :)

Au cas où quelqu'un trouverait cela utile (je ne peux pas expliquer pourquoi c'est arrivé, peut-être que quelqu'un pourrait sans spéculation)

0
dancun chiriga

Exécution de Win 8 64 bits Rails 4.2.5 Ruby 2.1.7

Celui-ci a fonctionné pour moi

0
Sumit Kumar