use*_*021 31 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/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'
...
Run Code Online (Sandbox Code Playgroud)
这一切意味着什么?
更新:
这是在Windows 8上.Windows 7不会出现这些错误.
Kev*_*n P 82
我的朋友几个月前在Win 8 RTM上尝试了一个Rails教程并遇到了这个错误.不确定Windows 7中是否存在此问题,但这可能会有所帮助.
选项:
1)删除 //= require_tree ./忽略问题 -此行不应该首先导致问题.ExecJS与系统上的JavaScript运行时正常工作存在实际问题,删除此行只是忽略了这一事实.
2)安装Node.js /跑掉 - 许多人似乎最终安装了Node.js并使用它而不是已经在他们的系统上运行的JavaScript运行时.虽然这是一个有效的选项,但它还需要额外的软件,并且只能避免原始问题,即ExecJS无法正常使用系统上的JavaScript运行时.如果您的系统上现有的JavaScript运行时应该可以工作,为什么不让它工作而不是安装更多软件?根据ExecJS创建者的说法,Windows内置的运行时实际上是受支持的......
ExecJS允许您从Ruby运行JavaScript代码.它会自动选择可用于评估JavaScript程序的最佳运行时,然后将结果作为Ruby对象返回给您.
ExecJS支持这些运行时:
- therubyracer - 嵌入在Ruby中的Google V8
- therubyrhino - Mozilla Rhino嵌入在JRuby中
- 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 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
)
Run Code Online (Sandbox Code Playgroud)
接下来,停止然后重新启动Rails服务器并在浏览器中刷新产生原始错误的页面.希望页面现在加载没有错误.这是我们最初发布结果的ExecJS问题主题:https://github.com/sstephenson/execjs/issues/81#issuecomment-9892952
如果这不能解决问题,您可以随时使用您希望制作的备份副本覆盖已修改的runtimes.rb,并且所有内容都将回到原点.在这种情况下,请考虑选项3并继续搜索.让我们知道什么最终对你有用..除非它删除require_tree或安装node.js,已经有很多东西可以解决.:)
正如评论者所说,您可能错过了一块宝石。尝试将以下内容添加到您的 gemfile 中:
gem 'therubyracer'
Run Code Online (Sandbox Code Playgroud)
并运行bundle install
| 归档时间: |
|
| 查看次数: |
21494 次 |
| 最近记录: |