我创建了一个数据库(空)的rails应用程序。当我尝试查看我的产品页面时,我在http://localhost:3000/products页面上收到以下错误消息。在迁移数据库之前,应用程序确实起作用。我正在使用therubyracer,我在Windows 7上。
ExecJS::ProgramError in Products#index
Showing C:/RailsInstaller/DevKit/home/JP/nameofapp/app/views/layouts/application.html.erb where line #16 raised:
TypeError: Object doesn't support this property or method
(in C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/turbolinks-2.5.3/lib/assets/javascripts/turbolinks.js.coffee)
Extracted source (around line #16):
13 <script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
14
15 <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %>
16 <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
17 <%= csrf_meta_tags %>
18
19 </head>
Rails.root: C:/RailsInstaller/DevKit/home/JP/nameofapp
这是我在Rails服务器上得到的:
Started GET "/products" for 127.0.0.1 at 2015-04-23 22:28:06 -0400
ActiveRecord::SchemaMigration Load (0.0ms) SELECT "schema_migrations".* FROM
"schema_migrations"
Processing by ProductsController#index as HTML
Product Load (0.0ms) SELECT "products".* FROM "products"
Rendered products/index.html.erb within layouts/application (4.0ms)
Completed 500 Internal Server Error in 3391ms
ActionView::Template::Error (TypeError: Object doesn't support this property or
method
(in C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/turbolinks-2.5.3/lib/
assets/javascripts/turbolinks.js.coffee)):
13: <script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.mi
n.js"></script>
14:
15: <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolin
ks-track' => true %>
16: <%= javascript_include_tag 'application', 'data-turbolinks-track' => t
rue %>
17: <%= csrf_meta_tags %>
18:
19: </head>
app/views/layouts/application.html.erb:16:in `_app_views_layouts_application_h
tml_erb__912949727_56715336'
Rendered C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/actionpack-4.1.8
/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb (1.0ms)
Rendered C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/actionpack-4.1.8
/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb
(6.0ms)
Rendered C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/actionpack-4.1.8
/lib/action_dispatch/middleware/templates/rescues/template_error.html.erb within
rescues/layout (27.0ms)
感谢您的帮助。
答案 0 :(得分:7)
我从application.js中删除了require_tree并且它正常工作
//= require jquery
//= require jquery_ujs
//= require turbolinks
// require_tree .
答案 1 :(得分:7)
发生错误是因为找到位于app / assets中的正确资产时出现问题。要解决此问题,您可以按照以下步骤操作。
将 gem'coffee-script-source','1.8.0'添加到Gemfile中并运行捆绑安装然后 运行捆绑更新coffee-script-source 重启rails服务器 或者有一个肮脏的解决方法,即从
更改代码<%= stylesheet_link_tag "application", media: "all", "data-turbolinks-track" => true %>
<%= javascript_include_tag "application", "data-turbolinks-track" => true %>
<%= csrf_meta_tags %>
到
<%= stylesheet_link_tag "default", media: "all", "data-turbolinks-track" => true %>
<%= javascript_include_tag "default", "data-turbolinks-track" => true %>
<%= csrf_meta_tags %>
但请注意,此解决方法并未真正解决应用程序问题,它只是使您的应用程序无法使用预期的样式表和javascripts。
答案 2 :(得分:4)
我认为Best Solution正在删除application.js文件中的斜杠,如
= require jquery
= require jquery_ujs
= require turbolinks
= require_tree .
答案 3 :(得分:3)
我也有这个问题,请查看@Kevin P在此主题ExecJS::RuntimeError on Windows trying to follow rubytutorial上的广泛解决方案。另外,@ evedoevelli在另一个主题:Rails ExecJS::ProgramError in Pages#home?上的解决方案是有效的。我使用了第二个解决方案,这是最近的日期。
答案 4 :(得分:2)
对我来说,解决方案是删除-
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload'%>
<%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>
来自
app \ views \ layout \ application.html.erb
答案 5 :(得分:1)
经过仔细研究,这是我偶然发现的解决方案。只需确保安装了最新版本的NodeJs即可。安装NodeJ后,请确保重新启动我们的系统。但是,更新Windows操作系统非常重要。你应该没事。如果您正在使用RubyMine,那么现在应该可以使用。无需担心咖啡脚本问题。 ExecJs程序错误似乎与NodeJ及其相关模块更相关。
答案 6 :(得分:0)
原因是因为未安装NodeJS。如果你安装它,问题应该消失。
但是,这也适用于application.js
:
//= require jquery
//= require jquery_ujs
//= require turbolinks
// require_tree .
但这不是首选方法,因为所有这些都是禁用rails功能。例如,ActionCable不适用于此更改。
答案 7 :(得分:0)
如果不使用布局,则在控制器文件中类标题下方的位置放置“ layout false”:
ABCController类