UPDATE: Colins Vorschlag, die Zeile // = require_tree zu entfernen. hat das Problem behoben.
Ich habe über 2 Tage damit verbracht, jedem Vorschlag zu folgen und mein Problem zu beheben. Ich versuche, dem Buch http://ruby.railstutorial.org auf einem Windows-Computer zu folgen, und kann für mein ganzes Leben den folgenden bösen Fehler nicht überwinden.
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
Ich habe jeden Vorschlag ausprobiert, einschließlich der Installation von nodejs mit der msi, der Verwendung von execjs 1.3.0 und anderen Dingen, an die ich mich nicht einmal mehr erinnern kann. Hier ist die Edelsteindatei
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''
und hier ist die session.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>
Hier ist Konsoleninhalt
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)
Ich habe Devkit installiert und verschiedene Edelsteine ausprobiert, aber bitte schlagen Sie Änderungen vor, die mir bei der Entwicklung unter Windows helfen können. Ich habe Rubyinstaller für alles verwendet.
Was vermisse ich?
quelle
//= require_tree .
ausapplication.js
und sehen , ob der Fehler weiterhin bestehen?.js.coffee
Dateiapp/assets/javascripts
in JavaScript und fügt sie dann Ihrem Layout hinzu (jedoch nur im Entwicklungsmodus; im Produktionsmodus wird das kompilierte js zu Ihrerapplication.js
Datei hinzugefügt ). Dasrequire_tree .
sollte keine Fehler verursachen, also haben Sie irgendwie ein Problem mit einer der Dateien, die enthalten sind. Können Sie eine Liste aller Dateien in Ihremapp/assets/javascripts
Verzeichnis veröffentlichen? Sie können auch versuchen, den Inhalt von vollständig zu löschensessions.js.coffee
und wieder hinzuzufügen, um//= require_tree .
festzustellen, ob der Fehler weiterhin besteht.Antworten:
Mein Freund hat vor einigen Monaten versucht, ein Rails-Tutorial für Win 8 RTM zu erstellen, und ist auf diesen Fehler gestoßen. Ich bin mir nicht sicher, ob dieses Problem auch in Windows 7 besteht, aber dies kann hilfreich sein.
Optionen:
1) Entfernen
//= require_tree .
/ Ignorieren des Problems - Wie ColinR oben angegeben hat, sollte diese Zeile überhaupt kein Problem verursachen. Es gibt ein tatsächliches Problem mit ExecJS, das ordnungsgemäß mit der JavaScript-Laufzeit auf Ihrem System funktioniert, und das Entfernen dieser Zeile ignoriert diese Tatsache nur.2) Node.js installieren / weglaufen - Viele Leute scheinen am Ende nur Node.js zu installieren und diese anstelle der JavaScript-Laufzeit zu verwenden, die bereits auf ihrem System vorhanden ist. Dies ist zwar eine gültige Option, erfordert jedoch zusätzliche Software und vermeidet nur das ursprüngliche Problem, nämlich, dass ExecJS mit der bereits auf Ihrem System vorhandenen JavaScript-Laufzeit nicht ordnungsgemäß funktioniert. Wenn die vorhandene JavaScript-Laufzeit auf Ihrem System funktionieren soll, warum nicht, anstatt mehr Software zu installieren? Laut dem ExecJS-Ersteller wird die bereits in Windows integrierte Laufzeit tatsächlich unterstützt ...
3) Das Problem tatsächlich beheben / Lernen - Verwenden Sie das Wissen der Optionen 1 und 2, um nach anderen Lösungen zu suchen. Ich kann Ihnen nicht sagen, wie viele Webseiten, die ich geschlossen habe, nachdem ich die Optionen 1 oder 2 gesehen habe, die akzeptierte Lösung waren, bevor ich tatsächlich Informationen über das Grundproblem gefunden habe, das wir hatten. Der einzige Grund, warum wir weiter gesucht haben, war, dass wir nicht glauben konnten, dass das Rails-Team (1) eine Codezeile in jedes vom Gerüst generierte Projekt einfügen würde, das ein Problem verursacht hat, oder (2) dass wir zusätzliche Software installieren müssen, um diesen Standard auszuführen Codezeile. Und so kamen wir schließlich zu einer Lösung für unser Grundproblem (Ihre Meilen können variieren).
Der Fix , die für uns gearbeitet: Auf dem System Probleme haben, ExecJS finden runtimes.rb Datei. Es sieht so aus . Erstellen Sie eine Kopie der gefundenen Datei zur Sicherung. Öffnen Sie die ursprüngliche runtimes.rb zur Bearbeitung. Suchen Sie den Abschnitt, der mit der Zeile beginnt
JScript = ExternalRuntime.new(
. In diesem Abschnitt in der Zeile mit:command => "cscript //E:jscript //Nologo //U",
- entfernen Sie die//U
einzige. Dann in der Zeile mit:encoding => 'UTF-16LE' # CScript with //U returns UTF-16LE
- UTF-16LE in ändernUTF-8
. Speichern Sie die Änderungen an der Datei. Dieser Abschnitt der Datei sollte nun lauten:Stoppen Sie anschließend Ihren Rails-Server und aktualisieren Sie die Seite in Ihrem Browser, die den ursprünglichen Fehler verursacht hat. Hoffentlich wird die Seite jetzt fehlerfrei geladen. Hier ist der ExecJS-Problem-Thread, in dem wir ursprünglich unsere Ergebnisse veröffentlicht haben: https://github.com/sstephenson/execjs/issues/81#issuecomment-9892952
Wenn das Problem dadurch nicht behoben wurde, können Sie die geänderte runtimes.rb jederzeit mit der Sicherungskopie überschreiben, die Sie (hoffentlich) erstellt haben, und alles ist wieder auf dem ersten Platz. In diesem Fall sollten Sie Option 3 in Betracht ziehen und weiter suchen. Lassen Sie uns wissen, was letztendlich für Sie funktioniert. Wenn Sie nicht den require_tree entfernen oder node.js installieren, ist bereits viel davon im Gange. :) :)
quelle
UTF-16LE
,UTF-16
ohne die//U
Option zu entfernen . Ich habe es bestätigt.Hatte das gleiche Problem OS- Windows 8 Fehler- 'ExecJS :: RuntimeError ...' Lösung- fehlende Node.js
quelle
Ich hatte dieses Problem und durchsuchte das Internet. Ich verwende Windows 8 mit dieser Rails Gem-Datei
Ging zu http://nodejs.org/download/ installiert - startete den Computer neu und alles funktionierte.
quelle
Ich habe die Lernroute bevorzugt . Es scheint, dass das Problem darauf zurückzuführen ist
Rückgabe einer leeren Zeichenfolge in
execjs\external_runtine.rb
(Zeile 173 in Version 1.4.0). Aus diesem Grund enthält die Fehlermeldung keinen Text. Die vorgeschlagenen Änderungen haben bei mir nicht funktioniert. Ich wechselteUTF-16LE
zuUTF-8
, aber es kehrte noch eine leere Zeichenfolge. Ich habe\\U
aus demcommand
- dieser zumindest zurückgegebene Text, aber er war in der falschen Codierung - im Browser entfernt, der als chinesische Schriftzeichen angezeigt wurde.Laut diesem MSDN-Blogbeitrag führt die Verwendung des
//U
Flags und die Umleitung in eine Datei dazucscript
, dass das Ergebnis mit zurückgegeben wirdUTF-16
.Und dann funktionierte es auf magische Weise ( @ #% $ & ^ @ $% !!!?!?!) Mit
command
as"cscript //E:jscript //Nologo"
undencoding
as"UTF-8"
. Naja.quelle
Ich musste meinen nodejs-Ordner zu meiner Windows Path-Umgebungsvariablen hinzufügen. Öffnen Sie in Windows 8 die Systemsteuerung, gehen Sie zu System, Erweiterte Systemeinstellungen (links), klicken Sie links auf Umgebungsvariablen und bearbeiten Sie die Pfadvariable, um das Verzeichnis in Ihren nodejs-Ordner aufzunehmen (wahrscheinlich in den Programmdateien).
Natürlich müssen Sie Node.js installiert haben (verwenden Sie das Windows-Installationsprogramm ) und CoffeeScript über NPM installiert haben.
quelle
Ich weiß, dass dies eine sehr späte Antwort auf dieses Problem ist, aber ich bin auf etwas Ähnliches gestoßen und bin den ganzen Weg gegangen, um zu verstehen, was das Problem wirklich verursacht hat.
Es stellte sich heraus, dass die Standard-Windows-JScript-Engine immer noch auf es3 läuft und viele Edelsteine die Funktionen von es5 oder es6 nutzen. Leider gibt es in diesem Fall (Sie verwenden ein Juwel oder einen Code, der die Funktionen von es5 oder es6 nutzt) keine Möglichkeit, es unter Windows mit der nativen js-Engine funktionieren zu lassen.
Dies ist der Grund, warum die Installation von node.js das Problem löst (node ist mindestens es5).
Hoffe, dies kann einigen Leuten helfen, die mit einem Laufzeitfehler von jsexec zu kämpfen haben.
Mein 2-Cent-Rat ist, den Knoten (sehr einfach) oder v8 zu installieren und den // = require_tree nicht zu entfernen.
Hinweis execjs verwendet automatisch den Knoten, wenn er erkannt wird. Andernfalls erzwingen Sie die Verwendung und fügen Sie im Boot Folgendes hinzu:
Um die Umgebung auf Knoten zu setzen.
quelle
Für Windows-Benutzer kann dies funktionieren. Es gibt ein Problem mit der Coffee-Script-Quelle> 1.9.0 unter Windows.
Es scheint, dass Sie dies zu Ihrer Gemfile hinzufügen müssen:
Juwel 'Kaffee-Skript-Quelle', '1.8.0'
dann mach
Bundle Update Kaffee-Skript-Quelle
Ich habe alle oben genannten Optionen ausprobiert und auch einige Kombinationen davon gemischt, bis ich diesen Rails-4, ExecJS :: ProgramError in Pages # welcome gefunden habe und mehrere System-Gem-Updates sowie Bundle-Installationen und -Updates durchgeführt hatte.
Ich habe alle meine Versuche zurückgesetzt und meine Kaffee-Skript-Quelle herabgestuft, und es funktioniert. Hier posten, um anderen zu helfen, die möglicherweise ein ähnliches Problem haben.
Aktualisieren von Dateien im Hersteller / Cache
Coffee-Script-Source-1.8.0.gem Entfernen veralteter .gem-Dateien aus Hersteller / Cache Coffee-Script-Source-1.9.1.1.gem Bundle aktualisiert!
quelle
Für Anfänger wie mich:
Ändern Sie Zeile 6 von:
'<% = javascript_include_tag' application ',' data-turbolinks-track '=> true%>'
zu
Quelle aus dem Tutorial hier zu beheben
quelle
<%= stylesheet_link_tag 'defaults', media: 'all', 'data-turbolinks-track': 'reload' %> <%= javascript_include_tag 'defaults', 'data-turbolinks-track': 'reload' %>
Schnelle und schmutzige Lösung: Entfernen
//= require_tree .
vonapplication.js
.Wie ich in den Kommentaren zu der Frage erläutere, löst dies nicht das zugrunde liegende Problem, das den Fehler verursacht, sondern umgeht ihn lediglich.
quelle
Ich habe die Lösung Nummer 2 verwendet, weil ich vorher diesen Fehler hatte, aber in dieser Situation nicht funktioniert hat, dann habe ich die hinzugefügt
gem 'coffee-script-source', '1.8.0'
und Renn
und mein Problem wurde behoben
quelle
Hier ist eine weniger komplizierte Lösung für Anfänger:
Wenn Sie nur das Tutorial durcharbeiten, arbeiten Sie wahrscheinlich mit der Standard-Gemfile (oder fast). Sie können es in Ihrem Texteditor öffnen und das Nummernzeichen am Anfang dieser Zeile entfernen:
Sie müssen erneut ausführen
bundle install
, wodurch wahrscheinlich einige Dinge heruntergeladen werden. Sobald dies der Fall ist, sollten Sie den Server problemlos starten können.Zumindest hat das bei mir funktioniert.
Dies funktioniert übrigens auch unter Ubuntu 12.04.
quelle
Ausführen von Win 8 64-Bit-Schienen 4.2.5 Ruby 2.1.7
Dieser hat für mich gearbeitet
quelle
Haben Sie den Speicherort Ihres Codes von C: \ Users \ this-user \ yo-app geändert ? ?
Als ich jung in Rails war, habe ich eine App erstellt und der Standardspeicherort meiner App war C: \ Users \ Duncan \ my-app . Als ich dann meine App geändert und in D: \ All-my-Apps abgelegt habe -Ordner Ich hatte diesen Fehler ....
Ich kratzte mir am Kopf, versuchte 1,2,3 und mehr ..... nichts! Bis ich den gesamten Code an den Standardordner zurückgab und zu meinem Erstaunen wieder rollte :)
Für den Fall, dass jemand dies nützlich findet (ich kann nicht erklären, warum das passiert ist, vielleicht kann jemand ohne Spekulation)
quelle