Rails ExecJS :: ProgramError在Pages#home?

开始一个新的应用程序,当我创build一个控制器页面家庭,并尝试去本地主机:3000 / pages / home,我得到以下错误:

Showing c:/Users/Doesha/desktop/pinplug/app/views/layouts/application.html.erb where line #6 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) 

application.html.erb文件:

 <!DOCTYPE html> <html> <head> <title>Pinplug</title> <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %> <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %> <%= csrf_meta_tags %> </head> <body> <%= yield %> </body> </html> 

application_controller.rb文件:

 class ApplicationController < ActionController::Base # Prevent CSRF attacks by raising an exception. # For APIs, you may want to use :null_session instead. protect_from_forgery with: :exception end 

pages_controller.rb文件:

 class PagesController < ApplicationController def home end end 

routes.rb文件:

 Rails.application.routes.draw do get 'pages/home' # The priority is based upon order of creation: first created -> highest priority. # See how all your routes lay out with "rake routes". # You can have the root of your site routed with "root" # root 'welcome#index' # Example of regular route: # get 'products/:id' => 'catalog#view' # Example of named route that can be invoked with purchase_url(id: product.id) # get 'products/:id/purchase' => 'catalog#purchase', as: :purchase # Example resource route (maps HTTP verbs to controller actions automatically): # resources :products # Example resource route with options: # resources :products do # member do # get 'short' # post 'toggle' # end # # collection do # get 'sold' # end # end # Example resource route with sub-resources: # resources :products do # resources :comments, :sales # resource :seller # end # Example resource route with more complex sub-resources: # resources :products do # resources :comments # resources :sales do # get 'recent', on: :collection # end # end # Example resource route with concerns: # concern :toggleable do # post 'toggle' # end # resources :posts, concerns: :toggleable # resources :photos, concerns: :toggleable # Example resource route within a namespace: # namespace :admin do # # Directs /admin/products/* to Admin::ProductsController # # (app/controllers/admin/products_controller.rb) # resources :products # end end 

的Gemfile:

 source 'https://rubygems.org' # Bundle edge Rails instead: gem 'rails', github: 'rails/rails' gem 'rails', '4.2.0' # Use sqlite3 as the database for Active Record gem 'sqlite3' # Use SCSS for stylesheets gem 'sass-rails', '~> 5.0' # Use Uglifier as compressor for JavaScript assets gem 'uglifier', '>= 1.3.0' # Use CoffeeScript for .coffee assets and views gem 'coffee-rails', '~> 4.1.0' # See https://github.com/sstephenson/execjs#readme for more supported runtimes # gem 'therubyracer', platforms: :ruby gem 'execjs', '~> 2.2.2' # Use jquery as the JavaScript library gem 'jquery-rails' # Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks gem 'turbolinks' # Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder gem 'jbuilder', '~> 2.0' # bundle exec rake doc:rails generates the API under doc/api. gem 'sdoc', '~> 0.4.0', group: :doc # Use ActiveModel has_secure_password # gem 'bcrypt', '~> 3.1.7' # Use Unicorn as the app server # gem 'unicorn' # Use Capistrano for deployment # gem 'capistrano-rails', group: :development group :development, :test do # Call 'byebug' anywhere in the code to stop execution and get a debugger console gem 'byebug' # Access an IRB console on exception pages or by using <%= console %> in views gem 'web-console', '~> 2.0' end # Windows does not include zoneinfo files, so bundle the tzinfo-data gem gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby] 

gemfile.lock文件:

 GEM remote: https://rubygems.org/ specs: actionmailer (4.2.0) actionpack (= 4.2.0) actionview (= 4.2.0) activejob (= 4.2.0) mail (~> 2.5, >= 2.5.4) rails-dom-testing (~> 1.0, >= 1.0.5) actionpack (4.2.0) actionview (= 4.2.0) activesupport (= 4.2.0) rack (~> 1.6.0) rack-test (~> 0.6.2) rails-dom-testing (~> 1.0, >= 1.0.5) rails-html-sanitizer (~> 1.0, >= 1.0.1) actionview (4.2.0) activesupport (= 4.2.0) builder (~> 3.1) erubis (~> 2.7.0) rails-dom-testing (~> 1.0, >= 1.0.5) rails-html-sanitizer (~> 1.0, >= 1.0.1) activejob (4.2.0) activesupport (= 4.2.0) globalid (>= 0.3.0) activemodel (4.2.0) activesupport (= 4.2.0) builder (~> 3.1) activerecord (4.2.0) activemodel (= 4.2.0) activesupport (= 4.2.0) arel (~> 6.0) activesupport (4.2.0) i18n (~> 0.7) json (~> 1.7, >= 1.7.7) minitest (~> 5.1) thread_safe (~> 0.3, >= 0.3.4) tzinfo (~> 1.1) arel (6.0.0) binding_of_caller (0.7.2) debug_inspector (>= 0.0.1) builder (3.2.2) byebug (3.5.1) columnize (~> 0.8) debugger-linecache (~> 1.2) slop (~> 3.6) coffee-rails (4.1.0) coffee-script (>= 2.2.0) railties (>= 4.0.0, < 5.0) coffee-script (2.3.0) coffee-script-source execjs coffee-script-source (1.9.0) columnize (0.9.0) debug_inspector (0.0.2) debugger-linecache (1.2.0) erubis (2.7.0) execjs (2.2.2) globalid (0.3.2) activesupport (>= 4.1.0) hike (1.2.3) i18n (0.7.0) jbuilder (2.2.6) activesupport (>= 3.0.0, < 5) multi_json (~> 1.2) jquery-rails (4.0.3) rails-dom-testing (~> 1.0) railties (>= 4.2.0) thor (>= 0.14, < 2.0) json (1.8.2) loofah (2.0.1) nokogiri (>= 1.5.9) mail (2.6.3) mime-types (>= 1.16, < 3) mime-types (2.4.3) mini_portile (0.6.2) minitest (5.5.1) multi_json (1.10.1) nokogiri (1.6.6.2-x86-mingw32) mini_portile (~> 0.6.0) rack (1.6.0) rack-test (0.6.3) rack (>= 1.0) rails (4.2.0) actionmailer (= 4.2.0) actionpack (= 4.2.0) actionview (= 4.2.0) activejob (= 4.2.0) activemodel (= 4.2.0) activerecord (= 4.2.0) activesupport (= 4.2.0) bundler (>= 1.3.0, < 2.0) railties (= 4.2.0) sprockets-rails rails-deprecated_sanitizer (1.0.3) activesupport (>= 4.2.0.alpha) rails-dom-testing (1.0.5) activesupport (>= 4.2.0.beta, < 5.0) nokogiri (~> 1.6.0) rails-deprecated_sanitizer (>= 1.0.1) rails-html-sanitizer (1.0.1) loofah (~> 2.0) railties (4.2.0) actionpack (= 4.2.0) activesupport (= 4.2.0) rake (>= 0.8.7) thor (>= 0.18.1, < 2.0) rake (10.4.2) rdoc (4.2.0) json (~> 1.4) sass (3.4.11) sass-rails (5.0.1) railties (>= 4.0.0, < 5.0) sass (~> 3.1) sprockets (>= 2.8, < 4.0) sprockets-rails (>= 2.0, < 4.0) tilt (~> 1.1) sdoc (0.4.1) json (~> 1.7, >= 1.7.7) rdoc (~> 4.0) slop (3.6.0) sprockets (2.12.3) hike (~> 1.2) multi_json (~> 1.0) rack (~> 1.0) tilt (~> 1.1, != 1.3.0) sprockets-rails (2.2.4) actionpack (>= 3.0) activesupport (>= 3.0) sprockets (>= 2.8, < 4.0) sqlite3 (1.3.10-x86-mingw32) thor (0.19.1) thread_safe (0.3.4) tilt (1.4.1) turbolinks (2.5.3) coffee-rails tzinfo (1.2.2) thread_safe (~> 0.1) tzinfo-data (1.2015.1) tzinfo (>= 1.0.0) uglifier (2.7.0) execjs (>= 0.3.0) json (>= 1.8.0) web-console (2.0.0) activemodel (~> 4.0) binding_of_caller (>= 0.7.2) railties (~> 4.0) sprockets-rails (>= 2.0, < 4.0) PLATFORMS x86-mingw32 DEPENDENCIES byebug coffee-rails (~> 4.1.0) execjs (~> 2.2.2) jbuilder (~> 2.0) jquery-rails rails (= 4.2.0) sass-rails (~> 5.0) sdoc (~> 0.4.0) sqlite3 turbolinks tzinfo-data uglifier (>= 1.3.0) web-console (~> 2.0) 

application.rb文件:

 require File.expand_path('../boot', __FILE__) require 'rails/all' # Require the gems listed in Gemfile, including any gems # you've limited to :test, :development, or :production. Bundler.require(*Rails.groups) module Pinplug class Application < Rails::Application # Settings in config/environments/* take precedence over those specified here. # Application configuration should go into files in config/initializers # -- all .rb files in that directory are automatically loaded. # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone. # Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC. # config.time_zone = 'Central Time (US & Canada)' # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded. # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s] # config.i18n.default_locale = :de # Do not swallow errors in after_commit/after_rollback callbacks. config.active_record.raise_in_transactional_callbacks = true end end 

我也把turbolinksgem从2.3.0降级到2.2.2,认为turbolinksgem的新版本导致我的应用程序出错; 显然这不适合我。

任何关于什么可能会出错我的应用程序的build议?

/app/views/layouts/application.html.erb5行和第6行中 ,将第一个参数从application更改为default

我遇到了同样的问题,对于我的情况,我不知道为什么,但它只发生在Windows上。 参数application在Web服务器上工作。

如果您在WIndows中运行,那么coffee-script-source 1.9.0在Windows上不起作用。

将其更改为以前的版本,将此行添加到您的Gemfile中:

 gem 'coffee-script-source', '1.8.0' 

然后重新安装调整新的Gem版本的依赖项的包:

 bundle update coffee-script-source 

我一直有这个问题一段时间,经历了这个线程中的所有答案,发现他们都不成功,我已经决定添加我的解决scheme,希望它可以帮助未来的Rails用户。

我已经在这个线程中做了所有事情 – 将application更改为default允许它通过没有错误,但是一旦你真正尝试使用任何JavaScript,就会显示一个错误,关于不能finddefault.js 。 我已经安装了NodeJS,并把它放在我的Ruby / bin文件夹。 那什么都没做,所以我把它删除了。

你确实可以暂时解决这个问题,用“切换application default ”的解决scheme,但这是非常短暂的。 如果您无意通过Rails资产pipe道为您的应用程序添加样式或添加JavaScript,则此解决scheme可能适用于您。 我自己没有testing过,但是我想在application.html头文件中包含JavaScript和样式表可能会工作。 但是,那么你失去了Rails的魔力。

我在Windows 8,Windows 10和Ubuntu平台上遇到了这个问题。

唯一能解决这个问题的方法,对我来说,仍然呈现JavaScript和样式表,首先将样式表的application application.css更改为application.css (即使您使用的是Sass / SCSS,因为它仍然编译成css)和application.js为JavaScript链接。 一旦完成,进入你的/assets/javascripts/application.js文件,然后删除/ / //= require turbolinks前的//= require turbolinks

现在你的应用程序应该工作得很好。

这可能是turbolinks更深层次的问题,但这是一个快速的解决方法,还没有让我失望。

在Windows咖啡脚本源> = 1.9.0不能正常工作。 只需在Gemfile中添加即可

  gem 'coffee-script-source', '1.8.0' 

并运行

 bundle update coffee-script-source 

只需在本地机器上安装NodeJS(确保相应的条目已添加到PATH中)并添加

 gem 'execjs' 

进入Gemfile

在Windows 10 1511版本中,将gem'coffee-script-source','1.8.0'添加到我的gemfile中,然后从项目目录中运行ruby bin \ bundle update coffee-script-source。 注意:以前的咖啡脚本源代码版本是1.10.0

我也有这个问题。 我进入崇高到我的项目文件夹。 然后点击应用程序文件夹,查看文件夹,布局,点击application.html.erb,并将第5行和第6行“应用程序”更改为“默认”。 工作很好。 感谢您发布您的问题,并感谢那些回答!

我只是想补充一下,我通过崇高去了。 我只是在学习,我不知道如何访问.erb文件。 只是想帮助别人。

(在Windows 8上)

  1. 安装Node.js!
  2. 将它添加到PATH(ENV_VAR)
  3. 重新启动服务器

我们只应在/app/views/layouts/application.html.erb中将第6行从application更改为default 。 改变第5行将导致样式表不加载。

我只是将第5行和第6行的“ application ”更改为“ default ”,然后解决。 /app/views/layouts/application.html.erb

从:

 <%= stylesheet_link_tag '**application**', media: 'all', 'data-turbolinks-track' => true %> <%= javascript_include_tag '**application**', 'data-turbolinks-track' => true %> 

至:

 <%= stylesheet_link_tag '**default**', media: 'all', 'data-turbolinks-track' => true %> <%= javascript_include_tag '**default**', 'data-turbolinks-track' => true %> 

终于得到了这个工作,松了一口气。 即使我不确定是什么使其工作。 尝试了以下所有内容。 1)安装node.js,将coffescript npm添加到它,然后重新启动。 2)为exec.js和修改后的runtime.rb添加了gem,这样它就不能使用默认的windows脚本文件。 3)为了安全起见,还添加了rubyracer gem gem'therubyracer',平台::ruby,ruby,gem,gem,

总之,添加了两个脚本引擎,nodejs和rubyracer,并添加了execjs,以便它select最好的脚本引擎,但不能selectwindows scrpting引擎。

我想只是安装nodejs可能已经工作后添加execjs。 但是,我没有重新启动(发布nodejs安装),并尝试所有其他的事情。

您需要阅读rails页面中的说明。 你需要ExecJS gem和一些JS运行时。

更实用:1.-安装一些运行时JS,例如node.js

2.-获取ExecJS gem-> gem install execjs

解释:

从rails页面:

“编译CoffeeScript和JavaScript资产压缩需要在系统上有一个JavaScript运行时,如果没有运行时,在资产编译期间你会看到一个execjs错误,通常Mac OS X和Windows都会安装一个JavaScript运行时。 therubyracer gem添加到生成的Gemfile中,并在注释行中添加新的应用程序,你可以取消注释,如果你需要它的话。 ExecJS的运行时间“。

从ExecJS的hte gitHub:

“ExecJS允许您从Ruby运行JavaScript代码,它会自动select可用的最佳运行时间来评估JavaScript程序,然后将结果作为Ruby对象返回给您。

ExecJS支持这些运行时:

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

ExecJS自述GitHub

我尝试了上面的所有解决scheme,唯一能正常工作的是安装node.js,将目录添加到Windows环境variables(在高级系统设置,环境variables,path中find)中,然后重新启动电脑和服务器。 我认为coffee-script-source的更新版本必须依赖于node.js以及其他的gem。 我没有使用咖啡脚本源相同的错误。

虽然将“应用程序”更改为“默认”是一个糟糕的解决scheme,因为它只是删除了应用程序的所有CSS样式。 我不推荐它。

它与turbolinksgem的问题,所以它的创build错误

所以在应用程序\视图\布局\ application.html.erb改变这一点

 <%= stylesheet_link_tag 'application.css', media: 'all', 'data-turbolinks-track': 'reload' %> <%= javascript_include_tag 'application.js', 'data-turbolinks-track': 'reload' %> 

 <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %> <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %> 

并取消app \ assets \ javascripts \ application.js中的第15行

 require turbolinks 

并将其复制到文件末尾的app \ assets \ stylesheets \ application.css中

从这你的CSS和JS将运行