Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails ExecJS::用户索引(RoR)中的运行时错误_Ruby On Rails_Windows 8 - Fatal编程技术网

Ruby on rails ExecJS::用户索引(RoR)中的运行时错误

Ruby on rails ExecJS::用户索引(RoR)中的运行时错误,ruby-on-rails,windows-8,Ruby On Rails,Windows 8,刚刚运行了一个“生成脚手架用户…”命令 然后我转到localhost:3000/users/并看到以下内容: ExecJS::RuntimeError in Users#index Showing C:/Users/TheOnlyUser/Desktop/NMS/nms2/app/views/layouts/application.html.erb where line #6 raised: (in C:/Users/TheOnlyUser/Desktop/NMS/nms2/app/

刚刚运行了一个“生成脚手架用户…”命令

然后我转到
localhost:3000/users/
并看到以下内容:

 ExecJS::RuntimeError in Users#index

Showing C:/Users/TheOnlyUser/Desktop/NMS/nms2/app/views/layouts/application.html.erb where line #6 raised:


  (in C:/Users/TheOnlyUser/Desktop/NMS/nms2/app/assets/javascripts/ads.js.coffee)

Extracted source (around line #6):

3: <head>
4:   <title>Nms2</title>
5:   <%= stylesheet_link_tag    "application", :media => "all" %>
6:   <%= javascript_include_tag "application" %>
7:   <%= csrf_meta_tags %>
8: </head>
9: <body>

Rails.root: C:/Users/TheOnlyUser/Desktop/NMS/nms2
Application Trace | Framework Trace | Full Trace

app/views/layouts/application.html.erb:6:in `_app_views_layouts_application_html_erb___753556572_43068540'
app/controllers/users_controller.rb:7:in `index'
...
ExecJS::用户中的RuntimeError#索引
显示C:/Users/TheOnlyUser/Desktop/NMS/nms2/app/views/layouts/application.html.erb,其中第6行出现:
(C:/Users/TheOnlyUser/Desktop/NMS/nms2/app/assets/javascripts/ads.js.coffee)
提取的源(第6行附近):
三:
4:Nms2
5:“所有”%>
6:   
7:   
8: 
9: 
root:C:/Users/TheOnlyUser/Desktop/NMS/nms2
应用程序跟踪|框架跟踪|完整跟踪
app/views/layouts/application.html.erb:6:in`_app_views_layouts_application_html_erb_753556572_43068540'
app/controllers/users\u controller.rb:7:in'index'
...
这是什么意思

更新:


那是在Windows8上。Windows 7没有给出这些错误。

正如评论员所说,您可能遗漏了一块宝石。尝试将以下内容添加到您的文件:

gem 'therubyracer'

然后运行
bundle安装

几个月前,我的朋友在尝试Win 8 RTM上的Rails教程时遇到了这个错误。不确定Windows 7中是否也存在此问题,但这可能会有所帮助

选项:

1)删除
/=require\u树。
/忽略问题-
此行首先不应导致问题。ExecJS在系统上与JavaScript运行时正常工作存在实际问题,删除这一行只是忽略了这一事实

2)安装Node.js/Running away-许多人似乎只是安装了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)
(来自)

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的行上返回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问题线程:


如果这并没有解决问题,您可以始终使用备份副本覆盖修改后的runtimes.rb(希望如此)在这个例子中,考虑选项3并继续搜索。让我们知道最终会为你工作的是什么。除非它删除了要求树或安装NoDE.js,所以已经有很多这样的事情发生了。)):<解决这个问题最快捷的方法是安装NoDE.js。Ruby会自动检测到它,你就不会再有JS运行时错误了

我最初选择Kevin p的解决方案3,在我的Windows 8机器上一切都很好

在昨晚(8/19/13)的MS更新之后,我甚至无法在我的rails应用程序中呈现主页

我安装了node.js,它工作正常,所以我现在使用解决方案2。

runtimes.rb文件

 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
    )

在Windows 8.1下工作,编辑runtimes.rb解决了Win 8.1上的问题,Kevin p的解决方案3也解决了同样的问题(编辑runtimes.rb文件)。
我在应用解决方案时的设置如下:
OS:Windows 8.1
Ruby版本:1.9.3p484

Rails版本:3.2.14

我修复此问题的最快方法是:

宝石“therubyracer”,“0.12.1”

包更新

捆绑安装


我希望这会有所帮助

我们可以看看你的Gem文件吗?看起来很可疑,就像你丢失了一块Gem。我在哪里可以找到runtimes.rb文件?选项3,很好的修复。在Windows 8上(使用RailsInstaller),它位于:“C:\RailsInstaller\Ruby1.9.3\lib\ruby\gems\1.9.1\gems\execjs-1.4.0\lib\execjs\runtimes.rb”我有一个类似于JBickFord的设置,他提供的路径与“为我们工作的修复程序”相结合,解决了我的问题