ExecJS :: RuntimeError su Windows che tenta di seguire rubytutorial

AGGIORNAMENTO: suggerimento di Colin di rimuovere la linea // = require_tree. ha risolto il problema.

Ho perso più di 2 giorni cercando di seguire ogni suggerimento e correggere il mio problema. Sto cercando di seguire il libro http://ruby.railstutorial.org su Windows Machine e non posso per la vita di me superare il seguente errore brutto.

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:  4:  5:  6:  7:  8:  9:  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 

Ho provato ogni suggerimento, inclusa l’installazione di nodejs con l’msi, usando execjs 1.3.0 e altre cose che non ricordo nemmeno più. Ecco il file della 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'' 

ed ecco le 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

            

Ecco il contenuto della 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:  4:  5:  6:  7:  8:  9:  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) 

Ho installato Devkit e ho provato varie gemme, ma per favore suggerisci le modifiche che possono aiutarmi a sviluppare su Windows. Ho usato rubyinstaller per tutto.

Cosa mi manca?

Il mio amico stava provando un tutorial su Rails su Win 8 RTM alcuni mesi fa e si è imbattuto in questo errore. Non sono sicuro se questo problema esiste anche in Windows 7, ma questo può essere d’aiuto.

Opzioni:

1) Rimozione di //= require_tree . / Ignorando il problema – Come affermato da ColinR in precedenza, questa linea non dovrebbe causare un problema in primo luogo. C’è un problema reale con ExecJS che funziona correttamente con il runtime di JavaScript sul tuo sistema e rimuovere questa linea sta semplicemente ignorando questo fatto.

2) Installazione di Node.js / Scaricamento – Molte persone sembrano finire con l’installazione di Node.js e usare quella invece del runtime JavaScript già sul loro sistema. Anche se questa è un’opzione valida, richiede anche un software aggiuntivo e evita solo il problema originale, ovvero che ExecJS non funziona correttamente con il runtime JavaScript già presente nel sistema. Se il runtime JavaScript esistente sul tuo sistema dovrebbe funzionare, perché non farlo funzionare invece di installare più software? Secondo il creatore di ExecJS, il runtime già integrato in Windows è infatti supportato …

ExecJS ti consente di eseguire codice JavaScript da Ruby. Seleziona automaticamente il miglior tempo disponibile per valutare il tuo programma JavaScript, quindi ti restituisce il risultato come object Ruby.

ExecJS supporta questi runtime:

  • terubyracer: Google V8 incorporato in Ruby
  • therubyrhino – Mozilla Rhino incorporato in JRuby
  • Node.js
  • Apple JavaScriptCore – Incluso con Mac OS X
  • Microsoft Windows Script Host (JScript)

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

3) In realtà risolvere il problema / Apprendimento – Utilizzare la conoscenza delle opzioni 1 e 2 per cercare altre soluzioni. Non posso dirvi quante pagine web ho chiuso dopo aver visto le opzioni 1 o 2 era la soluzione accettata prima di trovare effettivamente informazioni sul problema di root che stavamo avendo. L’unica ragione per cui continuavamo a cercare era che non potevamo credere che il team Rails avrebbe (1) inserito una riga di codice in ogni progetto generato da scaffold che causava un problema, o (2) richiedeva l’installazione di software aggiuntivo solo per eseguire quell’impostazione predefinita linea di codice. E così alla fine siamo arrivati ​​a una soluzione per il nostro problema di root (le miglia potrebbero variare).

La correzione che ha funzionato per noi: nel sistema che presenta problemi, trova il file runtimes.rb di ExecJS. Sembra così Crea una copia del file trovato per il backup. Apri il file runtimes.rb originale per la modifica. Trova la sezione che inizia con la riga JScript = ExternalRuntime.new( . In quella sezione, sulla riga contenente :command => "cscript //E:jscript //Nologo //U", – rimuovi solo //U Quindi sulla riga contenente :encoding => 'UTF-16LE' # CScript with //U returns UTF-16LE – cambia UTF-16LE in UTF-8 . Salva le modifiche al file Questa sezione del file ora dovrebbe leggere:

 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 ) 

Quindi, interrompere, quindi riavviare il server Rails e aggiornare la pagina nel browser che ha prodotto l’errore originale. Speriamo che la pagina si carichi senza errori ora. Ecco il thread del problema di ExecJS in cui originariamente abbiamo pubblicato i nostri risultati: https://github.com/sstephenson/execjs/issues/81#issuecomment-9892952

Se ciò non risolve il problema, puoi sempre sovrascrivere il file runtimes.rb modificato con la copia di backup che hai (sperabilmente) fatta e tutto tornerà al punto di partenza. In tal caso, considera l’opzione 3 e continua a cercare. Facci sapere cosa alla fine funziona per te .. a meno che non stia rimuovendo require_tree o installando node.js, ce ne sono già in giro. 🙂

Aveva lo stesso problema OS- Windows 8 Error- ‘ExecJS :: RuntimeError …’ Soluzione – Node.js mancante

  1. installa Node.js da http://www.nodejs.org/download/
  2. Riavvia il computer

Ho avuto questo problema e stava navigando su internet sto usando Windows 8 con questo file gem 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 

Sono andato su http://nodejs.org/download/ installed: ho riavviato la macchina e tutto ha funzionato.

Ho preferito l’itinerario di apprendimento . Sembra che il problema derivi da

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

restituire una stringa vuota in execjs\external_runtine.rb (riga 173 nella versione 1.4.0). Questo è il motivo per cui il messaggio di errore non contiene testo. Le modifiche suggerite non hanno funzionato per me. Ho cambiato UTF-16LE in UTF-8 , ma ha comunque restituito una stringa vuota. Ho rimosso \\U dal command – questo almeno ha restituito del testo, ma era nella codifica errata – nel browser visualizzato come caratteri cinesi.

Secondo questo post del blog MSDN , l’utilizzo del flag //U e il reindirizzamento a un file fa sì che cscript restituisca il risultato utilizzando UTF-16 .

E poi, magicamente, ha funzionato ( @ #% $ e ^ @ $% !!!?!?!) Usando il command "cscript //E:jscript //Nologo" e encoding come "UTF-8" . Oh bene.

Ho dovuto aggiungere la mia cartella nodejs alla mia variabile di ambiente Percorso di Windows. In Windows 8 apri il Pannello di controllo, vai su Sistema, Impostazioni di sistema avanzate (a sinistra), fai clic su Variabili d’ambiente a sinistra e modifica la variabile Percorso per includere la directory nella cartella nodejs (probabilmente in Programmi).

Ovviamente devi installare Node.js (usa il programma di installazione di Windows ) e aver installato CoffeeScript su NPM.

So che questa è una risposta molto tardiva per questo problema, ma ho avuto qualcosa di simile e ho intrapreso l’intero percorso per capire cosa causasse realmente il problema.

È risultato che il motore predefinito di jscript di Windows è ancora su es3, e molte gemme stanno sfruttando le funzionalità es5 o es6. Sfortunatamente se questo accade (stai usando una gem o un pezzo di codice che sfrutta le caratteristiche di es5 o es6), non c’è modo di farlo funzionare su Windows con il motore js nativo.

Questo è il motivo per cui l’installazione di node.js risolve il problema (il nodo è almeno es5).

Spero che questo possa aiutare alcune persone alle prese con un errore di runtime di jsexec.

I miei 2 centesimi consigliano di installare il nodo (molto semplice) o installare v8 e non rimuovere // = require_tree.

Nota execjs utilizzerà automaticamente il nodo se rilevato. Altrimenti forza il suo uso, aggiungendo all’avvio qualcosa come:

 ENV['EXECJS_RUNTIME'] = 'Node' 

Per impostare l’env sul nodo.

Per gli utenti di Windows, questo potrebbe funzionare. C’è un problema con coffee-script-source> 1.9.0 in esecuzione su Windows.

Sembra che devi aggiungere questo al tuo gemfile:

gem ‘coffee-script-source’, ‘1.8.0’

Quindi fa

bundle update coffee-script-source

Ho provato tutte le opzioni di cui sopra, e ho anche mescolato alcune combinazioni di esse, fino a quando ho trovato questo Rails-4, ExecJS :: ProgramError in Pages # benvenuto e avevo fatto più aggiornamenti di gemme di sistema e installazioni e aggiornamenti di bundle.

Ho ripristinato tutte le mie prove e ho declassato la mia fonte di caffè-script e funziona. Pubblicando qui per aiutare qualcun altro, che potrebbe avere un problema simile.

Aggiornamento dei file nel fornitore / cache

coffee-script-source-1.8.0.gem Rimozione di file .gem obsoleti dal fornitore / cache coffee-script-source-1.9.1.1.gem Pacchetto aggiornato!

Per i principianti come me:

  1. Passare a \ app \ views \ layouts \ application.html.erb
  2. Cambia la linea 6 da:

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

a

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

Fonte dal tutorial per risolvere qui

Soluzione rapida e sporca: rimuovi //= require_tree . da application.js .

Come spiego nei commenti per la domanda, questo in realtà non risolve il problema sottostante che sta causando l’errore, ma semplicemente lo elude.

Ho usato la soluzione numero 2 perché in precedenza avevo avuto questo errore, ma in questa ocation non ha funzionato, quindi ho aggiunto il

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

e corri

 bundle install 

e il mio problema è stato risolto

Ecco una soluzione meno complicata, per i principianti:

Se stai semplicemente lavorando attraverso il tutorial, probabilmente stai lavorando con il Gemfile predefinito (o quasi). Puoi aprirlo nell’editor di testo e rimuovere il cancelletto dalla parte anteriore di questa riga:

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

Sarà necessario rieseguire l’ bundle install , che probabilmente scaricherà alcune cose. Ma una volta fatto, dovresti essere in grado di avviare il server senza alcun problema.

Almeno, quello ha funzionato per me.

A proposito, funziona anche su Ubuntu 12.04.

Esecuzione di Win 8 binari a 64 bit 4.2.5 ruby 2.1.7

Questo ha funzionato per me

Hai cambiato la posizione del tuo codice da C: \ Users \ this-user \ yo-app ?

Quando ero giovane nei binari ho creato un’app e la posizione predefinita della mia app era C: \ Users \ Duncan \ my-app e poi, quando ho cambiato la mia app, l’ho inserita in D: \ All-my-Apps -Che ho avuto quell’errore ….

Mi sono grattato la testa, provato 1,2,3 e più ….. niente! Fino a quando non ho restituito tutto il codice al percorso della cartella di default e con mia grande sorpresa, stavo rotolando di nuovo 🙂

Nel caso qualcuno possa trovare questo utile (non posso spiegare perché è successo, forse qualcuno può senza speculazioni)