ExecJS :: RuntimeError sur Windows essayant de suivre rubytutorial

MISE À JOUR: suggestion de Colin de supprimer la ligne // = require_tree. A résolu le problème.

J'ai gaspillé plus de 2 jours en essayant de suivre toutes les suggestions et réparer mon problème. J'essaie de suivre le livre http://ruby.railstutorial.org sur la machine Windows et je ne peux pas pour la vie de moi passer l'erreur méchante 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 le msi, en utilisant execjs 1.3.0 et d'autres choses dont je ne me souviens plus. Voici le fichier gemme

 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 les 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 j'ai essayé diverses gemmes, mais suggère des modifications qui peuvent m'aider à développer sur Windows. J'ai utilisé le rubyinstaller pour tout.

Qu'est-ce qui me manque?

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

    Options:

    1) Suppression de //= require_tree . / Ignorer le problème – Comme ColinR indiqué ci-dessus, cette ligne ne devrait pas poser de problème en premier lieu. Il existe un problème réel avec ExecJS fonctionnant correctement avec l'exécution de JavaScript sur votre système et en supprimant cette ligne est simplement ignorer ce fait.

    2) Installation de Node.js / Extinction – Beaucoup de gens semblent finir par installer Node.js et l'utiliser à la place de l'exécution de JavaScript sur leur système. Bien qu'il s'agisse d'une option valide, il nécessite également un logiciel supplémentaire et évite uniquement le problème d'origine, c'est-à-dire que ExecJS ne fonctionne pas correctement avec l'exécution de JavaScript sur votre système. Si le temps d'exécution JavaScript existant sur votre système est supposé fonctionner, pourquoi ne pas fonctionner au lieu d'installer plus de logiciels? Selon le créateur ExecJS, le temps d'exécution déjà intégré à Windows est en fait pris en charge …

    ExecJS vous permet d'exécuter le code JavaScript de Ruby. Il choisit automatiquement le meilleur temps d'exécution disponible pour évaluer votre programme JavaScript, puis vous renvoie le résultat en tant qu'objet Ruby.

    ExecJS prend en charge ces temps de fonctionnement:

    • Therubyracer – Google V8 intégré dans Ruby
    • Therubyrhino – Mozilla Rhino intégré dans JRuby
    • Node.js
    • Apple JavaScriptCore – Inclus avec Mac OS X
    • Microsoft Windows Script Host (JScript)

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

    3) Réellement résoudre le problème / Apprendre – Utiliser la connaissance des options 1 et 2 pour rechercher d'autres solutions. Je ne peux pas vous dire combien de pages Web j'ai fermé en voyant les options 1 ou 2 était la solution acceptée avant de trouver des informations sur la question de la racine que nous avions. La seule raison pour laquelle nous avons regardé était que nous ne pouvions pas croire que l'équipe Rails (1) insère une ligne de code dans chaque projet généré par un échafaud qui a causé un problème ou (2) exige que nous installions un logiciel supplémentaire pour exécuter ce défaut Ligne de code. Et nous avons finalement abouti à un problème pour notre problème de racine (vos miles peuvent varier).

    Le correctif qui a fonctionné pour nous: sur le système ayant des problèmes, recherchez le fichier runtimes.rb d'ExecJS. Cela ressemble à ça . Effectuez une copie du fichier trouvé pour la sauvegarde. Ouvrez les runtimes.rb d'origine pour l'édition. Trouvez la section qui commence avec la ligne JScript = ExternalRuntime.new( . Dans cette section, sur la ligne contenant :command => "cscript //E:jscript //Nologo //U", – supprimez //U uniquement. Ensuite, sur la ligne contenant :encoding => 'UTF-16LE' # CScript with //U returns UTF-16LE – changez UTF-16LE en UTF-8 . Enregistrez les modifications dans le fichier. Cette section du fichier devrait maintenant 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, redémarrez votre serveur Rails et actualisez la page de votre navigateur qui a généré l'erreur d'origine. J'espère que la page est chargée sans erreur maintenant. Voici le sujet d'édition ExecJS où nous avons publié nos résultats à l'origine: https://github.com/sstephenson/execjs/issues/81#issuecomment-9892952

    Si cela n'a pas corrigé le problème, vous pouvez toujours écraser les runtimes.rb modifiés avec la copie de sauvegarde que vous (espérons-le) fait et tout sera de retour au carré. Dans ce cas, considérez l'option 3 et continuez à chercher. Faites-nous savoir ce qui fonctionne éventuellement pour vous … à moins qu'il ne supprime le require_tree ou l'installation de node.js, il existe déjà beaucoup de ce qui se passe déjà. 🙂

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

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

    J'ai eu ce problème et j'ai été plus effrayant sur Internet que je suis en train d'exécuter Windows 8 avec ce fichier de pierres de rails

     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 

    Passé à http://nodejs.org/download/ installed – a redémarré la machine et tout a fonctionné.

    J'ai dû ajouter mon dossier nodejs à ma variable d'environnement Path Windows. Dans Windows 8, ouvrez le Panneau de configuration, allez dans Système, Paramètres avancés du système (à gauche), cliquez sur Variables d'environnement à gauche et modifiez la variable Chemin pour inclure le répertoire dans votre dossier nodejs (probablement dans Program Files).

    Bien sûr, vous devez installer Node.js (utiliser le programme d' installation de Windows ) et avoir installé CoffeeScript via NPM.

    J'ai préféré la route d' apprentissage . Il semble que le problème découle de

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

    execjs\external_runtine.rb une chaîne vide dans execjs\external_runtine.rb (ligne 173 dans la version 1.4.0). C'est pourquoi le message d'erreur ne contient pas de texte. Les changements suggérés ne fonctionnaient pas pour moi. J'ai changé UTF-16LE en UTF-8 , mais il a toujours renvoyé une chaîne vide. J'ai supprimé \\U de la command – ce texte au moins renvoyé, mais c'était dans un mauvais codage – dans le navigateur qu'il affiche comme caractères chinois.

    Selon cette publication sur le blog MSDN , l'utilisation de l'indicateur //U et la redirection vers un fichier provoque le retour du résultat par cscript en utilisant UTF-16 .

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

    Je sais que c'est une réponse très tardive pour cette question, mais j'ai abordé quelque chose de semblable et j'ai parcouru le chemin complet pour comprendre ce qui causait vraiment le problème.

    Il s'est avéré que le moteur jscript Windows par défaut est toujours sur es3, et de nombreuses gemmes profitent des fonctionnalités es5 ou es6. Malheureusement, si cela se produit (vous utilisez une gemme ou un code qui tire parti des fonctionnalités es5 ou es6), il n'y a aucun moyen de le laisser fonctionner sur Windows avec le moteur js natif.

    C'est la raison pour laquelle installer node.js résout le problème (le nœud est au moins es5).

    J'espère que cela peut aider certaines personnes qui se débattent avec une erreur d'exécution de jsexec.

    Mes 2 cents conseillent d'installer le nœud (très facile) ou d'installer v8, et de ne pas supprimer le // = require_tree.

    Note execjs utilisera automatiquement le nœud si détecté. Sinon, forcez son utilisation, en ajoutant au démarrage quelque chose comme:

     ENV['EXECJS_RUNTIME'] = 'Node' 

    Pour définir le nœud env to node.

    Pour les utilisateurs de Windows, cela peut fonctionner. Il y a un problème avec coffee-script-source> 1.9.0 s'exécutant sur Windows.

    Il semble que vous devez ajouter ceci à votre gemfile:

    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 j'ai mélangé quelques combinaisons de celles-ci, jusqu'à ce que je trouvai ce Rails-4, ExecJS :: ProgramError dans Pages # bienvenu et que j'avais fait plusieurs mises à jour et mises à jour et mises à jour.

    J'ai repris toutes mes épreuves et réduit mon café-script-source et ça marche. Publier ici pour aider quelqu'un d'autre, qui peut avoir un problème similaire.

    Mise à jour des fichiers dans le fournisseur / cache

    Coffee-script-source-1.8.0.gem Suppression des fichiers .gem obsolètes du fournisseur / cache du logiciel coffee-script-source-1.9.1.1.gem Bundle updated!

    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 à réparer ici

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

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

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

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

    et courir

     bundle install 

    Et mon problème a été corrigé

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

    Si vous travaillez simplement dans le didacticiel, vous travaillez probablement avec Gemfile par défaut (ou presque). Vous pouvez l'ouvrir dans votre éditeur de texte, et supprimer le signe de livre de l'avant de cette ligne:

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

    Vous devrez ré-exécuter l' bundle install , qui va probablement télécharger quelques éléments. Mais une fois qu'il le fait, vous devriez pouvoir démarrer le serveur sans aucun problème.

    Au moins, cela a fonctionné pour moi.

    Cela fonctionne également sur Ubuntu 12.04, soit dit en passant.

    Running Win 8 64 bit rails 4.2.5 ruby ​​2.1.7

    Celui-ci a fonctionné pour moi