104

更新: 行//=require_treeを削除するというColinの提案。問題を修正しました。

私はそこにあるすべての提案に従い、私の問題を修正しようとして2日以上無駄にしています。私はWindowsマシンでhttp://ruby.railstutorial.orgの本をたどろうとしていますが、私の人生の間、次の厄介なエラーを乗り越えることができません。

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

msiでnodejsをインストールしたり、execjs 1.3.0を使用したり、これ以上思い出せないことなど、あらゆる提案を試しました。これが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''

これが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>

これがコンソールのコンテンツです

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)

Devkitをインストールし、さまざまなgemを試しましたが、Windowsでの開発に役立つ変更を提案してください。私はすべてにrubyinstallerを使用しました。

私は何が欠けていますか?

4

13 に答える 13

242

私の友人は、数か月前にWin 8 RTMでRailsチュートリアルを試みていましたが、このエラーが発生しました。この問題がWindows7にも存在するかどうかはわかりませんが、これは役立つ可能性があります。

オプション:

1) //= require_tree .問題の削除/無視-ColinRが前述したように、この行はそもそも問題を引き起こしてはなりません。システム上のJavaScriptランタイムでExecJSが正しく動作することには実際の問題があり、この行を削除することはその事実を無視しているだけです。

2)Node.jsのインストール/暴走- 多くの人は、Node.jsをインストールして、システムにすでにあるJavaScriptランタイムの代わりにそれを使用することになりそうです。これは有効なオプションですが、追加のソフトウェアも必要であり、ExecJSがシステム上にすでにあるJavaScriptランタイムで正しく機能していないという元の問題を回避するだけです。システム上の既存のJavaScriptランタイムが機能することになっている場合は、ソフトウェアを追加インストールする代わりに、それを機能させてみませんか?ExecJSの作成者によると、Windowsにすでに組み込まれているランタイムは実際にサポートされています...

ExecJSを使用すると、RubyからJavaScriptコードを実行できます。JavaScriptプログラムを評価するために利用可能な最適なランタイムを自動的に選択し、その結果をRubyオブジェクトとして返します。

ExecJSは、次のランタイムをサポートしています。

  • therubyracer-Rubyに埋め込まれたGoogleV8
  • therubyrhino-JRubyに埋め込まれたMozillaRhino
  • Node.js
  • Apple JavaScriptCore-MacOSXに含まれています
  • Microsoft Windows Script Host(JScript)

(github.com/sstephenson/execjs#execjsから)

3)実際に問題を修正する/学習する-オプション1と2の知識を使用して、他の解決策を探します。私たちが抱えていた根本的な問題についての情報を実際に見つける前に、オプション1または2を見て閉じたWebページの数が受け入れられた解決策であったかどうかはわかりません。私たちが探し続けた唯一の理由は、Railsチームが(1)問題の原因となったすべてのscaffoldで生成されたプロジェクトにコード行を挿入するか、(2)デフォルトを実行するためだけに追加のソフトウェアをインストールする必要があるとは信じられなかったためです。コード行。そのため、最終的に根本的な問題の修正に到達しました(マイルは異なる場合があります)。

私たちのために働いた修正: 問題があるシステムで、ExecJSのruntimes.rbファイルを見つけてください。このように見えます。見つかったファイルのコピーをバックアップ用に作成します。元のruntimes.rbを開いて編集します。行で始まるセクションを見つけますJScript = ExternalRuntime.new(。そのセクションで、-を含む行でのみを:command => "cscript //E:jscript //Nologo //U",削除し//Uます。次に、-を含む行で:encoding => 'UTF-16LE' # CScript with //U returns UTF-16LEUTF-16LEをに変更しUTF-8ます。変更をファイルに保存します。ファイルのこのセクションは次のようになります。

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
)

次に、Railsサーバーを停止して再起動し、元のエラーが発生したブラウザのページを更新します。うまくいけば、ページはエラーなしでロードされます。結果を最初に投稿したExecJSの問題スレッドは次のとおりです:https ://github.com/sstephenson/execjs/issues/81#issuecomment-9892952

これで問題が解決しなかった場合は、変更したruntimes.rbを(うまくいけば)作成したバックアップコピーでいつでも上書きでき、すべてが正方形に戻ります。その場合は、オプション3を検討し、検索を続けてください。最終的に何が機能するかをお知らせください。require_treeを削除するかnode.jsをインストールしない限り、すでに多くのことが行われています。:)

于 2013-01-02T08:27:21.697 に答える
14

同じ問題がありましたOS-Windows8エラー-'ExecJS::RuntimeError...'解決策-Node.jsがありません

  1. http://www.nodejs.org/download/からNode.jsをインストールします
  2. コンピューターを再起動します
于 2013-06-19T23:49:02.770 に答える
12

私はこの問題を抱えていて、このRailsgemファイルを使用してWindows8を実行しているインターネットを混乱させていました

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

インストールされたhttp://nodejs.org/download/に行きました -マシンを再起動し、すべてが機能しました。

于 2012-12-04T07:56:34.510 に答える
5

私はラーニングルートを好みました。問題は

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

に空の文字列を返しますexecjs\external_runtine.rb(バージョン1.4.0の173行目)。これが、エラーメッセージにテキストが含まれていない理由です。提案された変更は私にはうまくいきませんでした。に変更UTF-16LEしましUTF-8たが、それでも空の文字列が返されました。私は-これは少なくとも返されたテキストを削除\\Uしましたcommandが、それは間違ったエンコーディングでした-ブラウザでは漢字として表示されていました。

このMSDNブログ投稿によると、フラグを使用し//Uてファイルにリダイレクトすると、を使用cscriptして結果が返されますUTF-16

そして、魔法のように、asとasを使用して機能しました( @#%$&^ @ $%!!!?!?!)。しかたがない。command"cscript //E:jscript //Nologo"encoding"UTF-8"

于 2013-06-29T00:01:38.147 に答える
4

nodejsフォルダーをWindowsパス環境変数に追加する必要がありました。Windows 8で、コントロールパネルを開き、[システム]、[システムの詳細設定](左側)に移動し、左側の[環境変数]をクリックして、Path変数を編集してディレクトリをnodejsフォルダー(おそらくプログラムファイル内)に含めます。

もちろん、Node.jsをインストールし(Windowsインストーラーを使用)、NPMを介してCoffeeScriptをインストールする必要があります。

于 2013-01-22T22:05:35.490 に答える
4

これはこの問題に対する非常に遅い回答であることを私は知っていますが、私は似たようなことをして、実際に問題を引き起こしている原因を理解するために完全な道を歩みました。

デフォルトのWindowsjscriptエンジンはまだes3上にあり、多くのgemがes5またはes6の機能を利用していることが判明しました。残念ながら、これが発生した場合(es5またはes6の機能を活用するgemまたはコードを使用している場合)、ネイティブjsエンジンを使用するWindowsで動作させる方法はありません。

これが、node.jsをインストールすることで問題が解決する理由です(ノードは少なくともes5です)。

これがjsexecのランタイムエラーに苦しんでいる何人かの人々を助けることができることを願っています。

私の2セントのアドバイスは、ノード(非常に簡単)をインストールするか、v8をインストールすることであり、//=require_treeを削除しないことです。

execjsは、検出された場合、自動的にノードを使用することに注意してください。それ以外の場合は、強制的に使用し、ブートに次のようなものを追加します。

ENV['EXECJS_RUNTIME'] = 'Node'

環境をノードに設定します。

于 2015-01-20T23:43:57.190 に答える
4

Windowsユーザーの場合、これは機能する可能性があります。Windowsで実行されているcoffee-script-source>1.9.0に問題があります。

これをgemfileに追加する必要があるようです。

gem'coffee-script-source'、 '1.8.0'

その後、

バンドル更新coffee-script-source

このRails-4、ExecJS :: ProgramErrorがPages#welcomeで見つかり、複数のシステムgemの更新とバンドルのインストールと更新を行うまで、上記のすべてのオプションを試し、それらのいくつかの組み合わせも混ぜ合わせました。

私はすべての試行を元に戻し、coffee-script-sourceをダウングレードしました。それは機能します。同様の問題を抱えている可能性のある他の人を助けるためにここに投稿してください。

ベンダー/キャッシュ内のファイルを更新しています

coffee-script-source-1.8.0.gemベンダー/キャッシュから古い.gemファイルを削除するcoffee-script-source-1.9.1.1.gemバンドルが更新されました!

于 2015-09-18T01:09:19.083 に答える
3

私のような初心者の場合:

  1. \ app \ views \ layouts\application.html.erbに移動します
  2. 6行目を次のように変更します。

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

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

ここで修正するチュートリアルからのソース

于 2015-07-23T23:11:21.620 に答える
2

迅速で汚い解決策:から削除//= require_tree .application.jsます。

質問のコメントで説明しているように、これはエラーの原因となっている根本的な問題を実際に解決するのではなく、単にそれを回避するだけです。

于 2012-11-29T16:54:56.187 に答える
2

以前にこの間違いがあったので、ソリューション番号2を使用しましたが、この場合は機能しませんでした。次に、

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

実行します

bundle install

そして私の問題は修正されました

于 2016-04-13T20:31:07.070 に答える
1

初心者向けの、それほど複雑ではないソリューションは次のとおりです。

チュートリアルを実行しているだけの場合は、おそらくデフォルトのGemfile(またはほぼ)を使用しています。テキストエディタで開き、この行の先頭からポンド記号を削除できます。

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

再実行する必要がありますbundle install。これにより、いくつかのものがダウンロードされる可能性があります。ただし、一度実行すると、問題なくサーバーを起動できるようになります。

少なくとも、それは私にとってはうまくいきました。

ちなみに、これはUbuntu12.04でも機能します。

于 2013-06-04T01:09:36.833 に答える
0

Win864ビットレールの実行4.2.5Ruby2.1.7

これは私のために働いた

于 2015-11-18T09:22:26.940 に答える
0

コードの場所をC:\ Users \ this-user \ yo-appから変更しましたか?

Railsで若い頃、アプリを作成しました。アプリのデフォルトの場所はC:\ Users \ Duncan \ my-appでした。次に、my-appを変更してD:\All-my-Appsに配置しました。 -フォルダエラーが発生しました...

私は頭をかいて、1、2、3などを試しました.....何もしませんでした!すべてのコードをデフォルトのフォルダーの場所に戻し、驚かされるまで、私は再びローリングしていました:)

誰かがこれが役に立つと思うかもしれない場合(私はそれが起こった理由を説明することはできません、多分誰かが推測なしでかもしれません)

于 2018-02-15T03:40:56.597 に答える