我的朋友几个月前尝试在Win 8 RTM上进行Rails教程,并遇到了此错误。不知道Windows 7中是否也存在此问题,但这可能会有所帮助。
选项:
1)删除//= require_tree.
/忽略问题-正如上述ColinR所述,此行首先不应引起问题。ExecJS在系统上的Javascript运行时下正常工作是一个实际问题,删除此行只是忽略了这一事实。
2)安装Node.js /失控-
许多人似乎最终只是安装Node.js并使用它代替了系统上已有的Javascript运行时。尽管这是一个有效的选项,但它还需要其他软件,并且只能避免原始问题,即ExecJS无法与系统中已经存在的Javascript运行时一起正常工作。如果应该在系统上运行现有的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时我关闭了多少个网页。我们一直在寻找的唯一原因是,我们无法相信Rails团队(1)在每个产生问题的脚手架生成项目中插入一行代码,或者(2)要求我们安装其他软件才能运行该默认设置代码行。因此,我们最终解决了我们的根本问题(您的里程可能会有所不同)。
对我们 有用的解决方案 : 在出现问题的系统上,找到ExecJS的 runtimes.rb
文件。看起来像这样。复制找到的文件以进行备份。打开原始的runtimes.rb进行编辑。找到以开头的部分
Jscript= ExternalRuntime.new(。在该部分中,在
:command => "cscript //E:jscript //Nologo//U",-删除一行
//U。然后在包含
:encoding => 'UTF-16LE' # Cscript with //U returnsUTF-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问题线程:
如果这不能解决问题,则始终可以用(希望)制作的备份副本覆盖修改后的runtimes.rb,一切将恢复到原来的状态。在这种情况下,请考虑选项3并继续搜索。让我们知道最终对您有用的..除非删除了require_tree或安装了node.js,否则已经有很多事情发生了。:)



