gpt4 book ai didi

ruby-on-rails - 用户#index 中的 ExecJS::RuntimeError (RoR)

转载 作者:行者123 更新时间:2023-12-02 01:08:05 25 4
gpt4 key购买 nike

刚刚运行了“生成脚手架用户...”命令。

然后我转到 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'
...

这一切意味着什么?

更新:

这是在 Windows 8 上。Windows 7 不会出现这些错误。

最佳答案

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

选项:

1) 删除 //= require_tree ./忽略问题 - 此行一开始就不应该引起问题。 ExecJS 与系统上的 JavaScript 运行时正常工作存在实际问题,删除这一行只是忽略了这一事实。

2) 安装 Node.js/逃跑 - 许多人似乎最终只是安装 Node.js 并使用它,而不是系统上已有的 JavaScript 运行时。虽然这是一个有效的选项,但它还需要额外的软件,并且只能避免最初的问题,即 ExecJS 无法与系统上已有的 JavaScript 运行时正常工作。如果系统上现有的 JavaScript 运行时应该可以工作,为什么不让它工作而不是安装更多软件呢?根据 ExecJS 创建者的说法,实际上支持 Windows 中内置的运行时...

ExecJS lets you run JavaScript code from Ruby. It automatically picks the best runtime available to evaluate your JavaScript program, then returns the result to you as a Ruby object.

ExecJS supports these runtimes:

  • therubyracer - Google V8 embedded within Ruby
  • therubyrhino - Mozilla Rhino embedded within JRuby
  • Node.js
  • Apple JavaScriptCore - Included with Mac OS X
  • Microsoft Windows Script Host (JScript)

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

3) 实际解决问题/学习 - 使用选项 1 和 2 的知识来搜索其他解决方案。在实际找到有关我们所遇到的根本问题的信息之前,我无法告诉您在看到选项 1 或 2 是可接受的解决方案后我关闭了多少网页。我们继续寻找的唯一原因是我们无法相信 Rails 团队会 (1) 在每个脚手架生成的导致问题的项目中插入一行代码,或者 (2) 要求我们安装额外的软件只是为了运行默认值行代码。因此,我们最终解决了根本问题(您的里程可能会有所不同)。

对我们有用的修复:在有问题的系统上,找到 ExecJS 的 runtimes.rb 文件。看起来像 this 。复制找到的文件以进行备份。打开原始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 问题线程:https://github.com/sstephenson/execjs/issues/81#issuecomment-9892952

如果这不能解决问题,您可以随时使用您(希望)制作的备份副本覆盖修改后的runtimes.rb,一切都会回到原点。在这种情况下,请考虑选项 3 并继续搜索。让我们知道什么最终对您有用......除非删除 require_tree 或安装 node.js,否则已经有很多这样的事情了。 :)

关于ruby-on-rails - 用户#index 中的 ExecJS::RuntimeError (RoR),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13530042/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com