【问题标题】:Error when running rails app - ExecJS::RuntimeError运行 Rails 应用程序时出错 - ExecJS::RuntimeError
【发布时间】:2012-01-11 20:15:44
【问题描述】:

我尝试在谷歌上搜索,但我还没有找到我的问题的答案。

我正在尝试通过 rails 运行一个简单的控制器脚本,当我到达页面时它给了我这个错误。

ExecJS::RuntimeError in Say#hello

显然 Say 是控制器,hello 是方法。在页面下方,我会获得有关该错误的更多信息。

dyld: unknown required load command 0x80000022
(in /Users/JoeMoe/Sites/demoRails/app/assets/javascripts/say.js.coffee)

我已经检查了这个文件,除了注释代码之外没有任何内容。这里应该有什么吧?

这是 say.js.coffee 文件中的内容

# Place all the behaviors and hooks related to the matching controller here.
# All this logic will automatically be available in application.js.
# You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/

再往下看,我发现我可以做一个应用程序跟踪来显示我。

app/views/layouts/application.html.erb:6:in `_app_views_layouts_application_html_erb__169683399_21885150'

我也可以进行框架跟踪。顺便说一下,这将是一个很长的列表。

execjs (1.2.9) lib/execjs/external_runtime.rb:129:in `exec_runtime'
execjs (1.2.9) lib/execjs/external_runtime.rb:27:in `block in exec'
execjs (1.2.9) lib/execjs/external_runtime.rb:40:in `compile_to_tempfile'
execjs (1.2.9) lib/execjs/external_runtime.rb:26:in `exec'
execjs (1.2.9) lib/execjs/external_runtime.rb:18:in `eval'
execjs (1.2.9) lib/execjs/external_runtime.rb:32:in `call'
coffee-script (2.2.0) lib/coffee_script.rb:57:in `compile'
tilt (1.3.3) lib/tilt/coffee.rb:46:in `evaluate'
tilt (1.3.3) lib/tilt/template.rb:76:in `render'
sprockets (2.0.3) lib/sprockets/context.rb:175:in `block in evaluate'
sprockets (2.0.3) lib/sprockets/context.rb:172:in `each'
sprockets (2.0.3) lib/sprockets/context.rb:172:in `evaluate'
sprockets (2.0.3) lib/sprockets/bundled_asset.rb:171:in`build_dependency_context_and_body'
sprockets (2.0.3) lib/sprockets/bundled_asset.rb:135:in `dependency_context'
....

还有更多,但它的列表很长,我不想让你感到厌烦。如果您需要完整列表,请告诉我,我会将其粘贴进去。

我正在运行带有以下内容的 Mac OS X - 红宝石 1.9.2 - 导轨 3.1.0 - 宝石 1.8.10 - sqlite3 3.7.9

【问题讨论】:

  • 您介意粘贴注释代码吗? Sprockets 从 cmets 读取指令,unknown required load 听起来可能有一个字符使 sprockets 不安......
  • 我刚刚编辑了帖子以显示文件中的注释代码。感谢您研究它,我真的很感激。
  • 你运行的是哪个 js-engine,你是怎么安装的?
  • @phoet 我不知道该如何回答。有没有办法查看我正在使用哪个?当你第一次测试一个新的 Rails 应用程序时,它正在运行,它适用于欢迎页面。
  • 在终端中输入coffee 会发生什么?

标签: ruby-on-rails ruby ruby-on-rails-3.1


【解决方案1】:

您必须为 javascript 安装一个额外的 gem。 编辑 gemfile 并添加 gem 'therubyracer'。然后你可以运行 bundle 来安装新的 gem。

这是您的详细解决方案: http://www.railszilla.com/2011/12/rails-3-coffescript-execjs/

【讨论】:

  • 嘿抱歉回复晚了。我在我的Windows电脑上工作没有问题。这就是解决方案。在做了一些研究之后,我对如何使用 gemfile 和 bundle install 命令有了更多的了解。谢谢
【解决方案2】:

我也遇到过!您需要安装“nodejs”。当我使用 Ubuntu Linux 时,我做到了:

apt-get install nodejs 

来源:http://forums.pragprog.com/forums/148/topics/9665#posts-26576(Sam Ruby 的帖子)

【讨论】:

  • 我在 Ubuntu 11.10 上运行 Ruby 1.8.7 和 Rails 3.2。我确实遇到了这个问题,我尝试了顶部帖子“安装'therubyracer'gem”,但它对我不起作用。我尝试安装nodejs,它在重新启动rails服务器后工作。我不知道是否两者都是必需的,或者只是其中一个软件包安装了必需的。只是提醒一下。
  • 我在 Windows 上遇到了同样的问题,安装 node.js 就成功了。
  • 谢谢。它在 Windows 8 上也对我有用。不过必须重新启动 cmd 提示符。
  • 我需要在 Windows 8 上将 gem 'node' 添加到我的 gemfile 中。谢谢。
  • 从 2.3.1 升级到 ruby​​ 2.5.1 后,需要将 mac 上的节点从 8 更新到 v10,然后才能正常工作。
【解决方案3】:

如果您在生产服务器中遇到此问题,这可能是由于内存使用造成的。 在进行资产预编译时,服务器会占用大量内存。

consider restarting your production server. 

【讨论】:

  • 如果内存使用问题停止服务器,并在部署完成后启动。
【解决方案4】:

以上都不适合我。 . . 我安装了gem 'coffee-script-source', '1.8.0'

然后应用程序开始运行,没有任何问题。

【讨论】:

    【解决方案5】:

    看起来您可能缺少一些宝石。

    添加到您的 Gemfile:

    gem 'therubyracer'
    gem 'execjs'
    

    然后运行$ bundle install 来安装它们。

    【讨论】:

      【解决方案6】:

      似乎缺少 javascript 运行程序,您只需要这样做

      gem 'therubyracer'
      

      然后

       bundle install
      

      如果您正在使用生产服务器,请重新启动服务器,然后考虑重新启动生产服务器。

      绝对能解决你的问题,

      干杯

      【讨论】:

        猜你喜欢
        • 2018-04-10
        • 2012-05-05
        • 2017-06-12
        • 1970-01-01
        • 1970-01-01
        • 2015-08-11
        • 1970-01-01
        • 2015-11-05
        • 1970-01-01
        相关资源
        最近更新 更多