在Windows上完成Michael Hartl教程时遇到使用execjs的问题...在Users#index中发生ExecJS::RuntimeError错误。

3

我是ruby和rails的新手,正在通过教程学习(或者说匍匐前行)。第二个项目使用脚手架创建了一个包含名称和电子邮件地址的用户。当我尝试查看用户屏幕时,我会得到以下信息:

ExecJS::RuntimeError in Users#index

Showing /home/max/rails_proj/demo_app/app/views/layouts/application.html.erb where line #6 raised:

湉異⁴牅潲㩲唠歮潮湷漠瑰潩⼢浴⽰硥捥獪〲ㄱ㤰㔲㐭㜲ⴲ㠱㝮穩ⴰ⸰獪•灳捥晩敩⹤਍
  (in /home/max/rails_proj/demo_app/app/assets/javascripts/users.js.coffee)
Extracted source (around line #6):

3: <head>
4:   <title>DemoApp</title>
5:   <%= stylesheet_link_tag    "application" %>
6:   <%= javascript_include_tag "application" %>
7:   <%= csrf_meta_tags %>
8: </head>
9: <body>
Rails.root: /home/max/rails_proj/demo_app

Application Trace | Framework Trace | Full Trace
app/views/layouts/application.html.erb:6:in `_app_views_layouts_application_html_erb__1031573605_1065816420'
app/controllers/users_controller.rb:7:in `index'

我正在使用Windows XP,Cygwin,Rails 3.1.0(我也尝试了新的rc1版本),Ruby 1.8.7。
我在谷歌上找到了这个错误,有人说有一种解决方法(使用execjs gem 1.2.9),但是这对我似乎没有用...... 我已经尝试了所有的修复方案(以我目前有限的Ruby等能力为准),但是仍然无法解决问题,尽管错误消息有时会不同 - 仍然在同一行上出错。
我尝试了卸载和重新安装Cygwin,Ruby,Rails等等...但是都没有成功...
希望能得到任何反馈!

这里有一个关于ExecJS的问题,可能会有所帮助:https://github.com/sstephenson/execjs/issues/48 - kristianp
7个回答

5

我在cygwin上遇到了同样的错误。我尝试编译最新的node.js(v0.6.15),但它说不支持cygwin。旧版本似乎支持它,所以这是我做的:

wget http://nodejs.org/dist/node-v0.4.12.tar.gz
tar xvfz node-v0.4.12.tar.gz
cd node-v0.4.12/
./configure
make
make install

我不确定是否有比0.4.12更新的版本适用于cygwin,但是这个方法暂时解决了我的问题。另外,我似乎已经拥有了适当的先决条件,但如果在配置或制作过程中遇到问题,只需搜索“逐步安装nodejs cygwin”即可。


2
看起来运行正常!NodeJS的Windows版本在ExecJS上失败。 - Chloe
1
可以使用MinGW + MSYS构建最新的Node,而且可能需要进行一些修改就可以在Cygwin上运行。请参见此博客文章。我不知道这是否也可以解决此问题。 - Oktalist

3
我不确定这个方法是否适用于你的情况,但在Ubuntu上,你可以添加以下代码:
gem 'therubyracer'

将以下内容添加到您的 Gemfile 中,它将正常工作。

另一个提示是在 Gemfile 中注释掉以下行:

group :assets do
#  gem 'sass-rails', "  ~> 3.1.0"
#  gem 'coffee-rails', "~> 3.1.0"
#  gem 'uglifier'
end

因为这些需要使用execjs的内容。


therubyracer需要libv8,但它无法在Windows或Cygwin上安装。 - Chloe
这就是为什么我在我的回答中指出它将在Ubuntu上运行 - 所以感谢你的无端投票!! - klaffenboeck
这个问题是关于Windows的。 - Chloe
我和原帖发布者处于同样的位置。正如@Chloe所说,我无法安装libv8,因此您的第一个解决方案不起作用。我尝试了您的第二个解决方案,但仍然出现错误:“用户#index中的LoadError”“无法加载此类文件-- coffee_script” - Kirk

1

我也遇到过这个问题,安装了JavaScript运行时后得以解决:

sudo apt-get install nodejs

我按照这篇文章的步骤进行操作:

http://www.adanacs.com/node/3

祝您好运!

1
apt-get 不是 Cygwin 的软件包安装程序。 - Chloe

0

我曾经遇到过类似的问题。更新 Ruby 1.9.3 到 Ruby 2.0.0 对我很有帮助。


0

作为一个曾经尝试在Windows上学习编程的人,我有两个建议:

  1. 安装Ubuntu来运行Ruby on Rails。这需要一些工作,但如果你打算投入时间和精力,它绝对值得。你可以在现有的Windows系统上设置双重安装,或者找一台旧电脑来安装Ubuntu。它比Windows XP使用更少的电力,只需要大约300MB的内存。

  2. 从《敏捷Web开发与Rails》开始学习。http://www.amazon.com/Agile-Development-Rails-Pragmatic-Programmers/dp/1934356549 这是一个更好的第一本教程。


1
没有做第二个,但是第一个让我成功了,直到老板给我买了一台Mac :) - Allen Maxwell

-1

运行

bundle install

cmd 中运行它,然后会安装一些新的 gem。
返回到 cygwin 并启动服务器。
rails s

一切都会好的。我曾经遇到过同样的问题。看起来是Cygwin引起的。


-1
在Windows上,我遇到了同样的问题。似乎没有安装JavaScript解释器来编译脚手架中使用的CoffeeScript。请从http://nodejs.org/安装Node.js,并重新启动您用于运行Rails的命令提示符,以更新路径。
我没有安装Cygwin,因此无法编译Node。

当使用ExecJS时,NodeJS的Windows版本会出现以下错误:Error: Cannot find module 'C:\tmp\execjs20130226-3968-bapw1p.js' - Chloe
@Chloe,这是ExecJS GitHub上的一个问题,看起来像你所写的,它可能会有所帮助:https://github.com/sstephenson/execjs/issues/48。我只发布了对我有用的内容,不确定下投票是为什么。 - kristianp
这是解决方案:https://dev59.com/bFvUa4cB1Zd3GeqPvJ_t#10114528。该问题是关于Cygwin的。 - Chloe
1
好的,谢谢你提供这个信息,我错过了Cygwin的关联。我认为你会发现现在通过RubyInstaller安装的MingW Rails比Cygwin得到更好的支持。 - kristianp

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