Rails-4,页面#welcome中出现ExecJS::ProgramError

10
我将尝试为我的Rails应用添加登录/注销功能。为此,我添加了bcrypt gem进行密码加密,并添加了访问控制器。现在当我在本地运行它时,会收到错误消息。在上述功能添加之前,我的应用程序正常运行。
错误消息:
TypeError: Object doesn't support this property or method
(in C:/DevKit/lib/ruby/gems/1.9.1/gems/turbolinks-2.5.3/lib/assets/javascripts/turbolinks.js.coffee)

Extracted source (around line #8):

<head>
  <title>PostApp</title>
  <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track'=>true %>
    <%= javascript_include_tag 'application', 'data-turbolinks-track'=>true %>  ----> Line 8

      <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
      <%= csrf_meta_tags %>

Gemfile:

source 'http://rubygems.org'

# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.1.4'
# Use sqlite3 as the database for Active Record
group :development do
  gem 'sqlite3' 
end
group :production do
  gem 'pg'
end
# Use SCSS for stylesheets
gem 'sass-rails', '~> 4.0.3'
# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 1.3.0'
# Use CoffeeScript for .js.coffee assets and views
gem 'coffee-rails', '~> 4.0.0'
# See https://github.com/sstephenson/execjs#readme for more supported runtimes
# gem 'therubyracer', platforms: :ruby

# 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'

我不知道我遇到了什么类型错误。你有什么想法可能是怎么回事?

谢谢, Chuchoo


@Nikolay Kostov,抱歉,我认为我的编辑覆盖了你的编辑.. - Chuchoo
希望这可以帮到你! https://dev59.com/7Oo6XIcBkEYKwwoYGwUw - Rokni
8个回答

42

在Windows上运行coffee-script-source 1.9.0时存在问题。

看起来你需要将以下内容添加到你的gemfile中:

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

然后执行

bundle update coffee-script-source

谢谢@KeithP,你怎么知道我的Windows正在运行coffee-script-source 1.9.0?它甚至没有在gem文件中提到。 - Chuchoo
我使用coffee-script-source 1.8.0更新了我的应用程序,但仍然出现相同的错误。似乎没有做任何事情。我还在研究中,会及时更新您。 - Chuchoo
仅仅在上述代码段中注释掉这一行就解决了我的问题。不确定这是否是首选解决方案,但肯定帮助我继续前进。 - Chuchoo
2
安装x86的Node.js运行时,帮助了我而不需要更改Gemfile。 - Ondrej Galbavý
1
更新完成后,别忘了重新启动服务器。 - Krycke

2

安装node.js的x86版本(即使有64位电脑也不要安装x64版本),您可以从https://nodejs.org/en/download/下载。

其他答案都不必要。

  • 不需要“coffee-script-source”或“execjs”
  • 不需要修改execjs文件
  • 不需要添加Node.js路径,因为x86会自动添加

安装完node.js后,您需要重新启动rails服务器和CMD shell(在其中运行它),以更新它将看到的路径。


这对我很有用,即使常见的安装程序x64.msi长时间以来一直失败了。非常感谢你。 - Agasi Mkhitaryan

2
我遇到了同样的问题,通过在config\initializer\assets.rb中添加以下代码来解决它。
Rails.application.config.assets.precompile += %w( application.css )

0

只需在上面的代码段中注释掉这一行就解决了我的问题。

<%=j avascript_include_tag 'application', 'data-turbolinks-track'=>true %> 

不确定这是否是首选解决方案,但肯定帮助我继续前进。


-2

@Chuchoo,评论<%=javascript_include_tag 'application', 'data-turbolinks-track'=>true %>可以解决问题。

对于许多新手来说,以下是如何找到解决方案的更多详细信息。

进入您的应用程序目录,并从your_app>app>views>layouts>application.html.erb访问application.html.erb文件,并在第6行注释掉JavaScript。

<!--%= javascript_include_tag 'application', 'data-turbolinks-track' => true %-->

刷新页面,你就可以开始了。


3
这样做只会给你带来更多的问题。请遵循第一个答案! - Flavio Wuensche

-2

取消注释(app/assets/javascripts/application.js)

//=  require jquery
//=  require jquery_ujs
//=  require turbolinks
//=  require_tree .

这不是解决方案,请回答时请解释为什么。 - Arnold Roa

-3

前往应用程序目录,然后打开 app/views/layouts 内的 application.html.erb 文件,并将第 5 和第 6 行注释掉,如下所示:

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

刷新你的网页,你的问题就解决了!


不是正确的解决方案。这只是禁用了应用程序的CSS和JS。 - Arnold Roa

-5

然后请解释视频的内容。 - Arnold Roa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接