私の友人は、数か月前に Win 8 RTM で Rails のチュートリアルを試みていて、このエラーに遭遇しました。この問題が Windows 7 にも存在するかどうかはわかりませんが、これが役立つ可能性があります。
オプション:
1) 問題の削除 //= require_tree .
/無視 -そもそもこの行によって問題が発生することはありません。システム上の JavaScript ランタイムで ExecJS が適切に動作するという実際の問題があり、この行を削除することはその事実を無視しているだけです。
2) Node.js のインストール / 逃げる - 多くの人は Node.js をインストールして、既にシステムにある JavaScript ランタイムの代わりにそれを使用しているようです。これは有効なオプションですが、追加のソフトウェアも必要であり、システムに既にある JavaScript ランタイムで ExecJS が適切に動作しないという元の問題を回避するだけです。システム上の既存の JavaScript ランタイムが機能するはずである場合、ソフトウェアをさらにインストールする代わりに、それを機能させてみませんか? ExecJS 作成者によると、既に Windows に組み込まれているランタイムは実際にサポートされています...
ExecJS を使用すると、Ruby から JavaScript コードを実行できます。JavaScript プログラムの評価に利用できる最適なランタイムを自動的に選択し、結果を Ruby オブジェクトとして返します。
ExecJS は次のランタイムをサポートしています。
- therubyracer - Ruby に埋め込まれた Google V8
- therubyrhino - JRuby に埋め込まれた Mozilla Rhino
- Node.js
- Apple JavaScriptCore - Mac OS X に含まれています
- Microsoft Windows スクリプト ホスト (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-16LE
UTF-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のインストールでない限り、すでに多くのことが行われています。:)