【问题标题】:There was an error while trying to load the gem 'uglifier'. (Bundler::GemRequireError)尝试加载 gem 'uglifier' 时出错。 (Bundler::GemRequireError)
【发布时间】:2016-03-28 23:53:53
【问题描述】:

为什么会出现这个错误?

shibly@mybox:~/blog$ rails server
/home/shibly/.gem/ruby/2.2.4/gems/bundler-1.11.2/lib/bundler/runtime.rb:80:in `rescue in block (2 levels) in require': There was an error while trying to load the gem 'uglifier'. (Bundler::GemRequireError)
    from /home/shibly/.gem/ruby/2.2.4/gems/bundler-1.11.2/lib/bundler/runtime.rb:76:in `block (2 levels) in require'
    from /home/shibly/.gem/ruby/2.2.4/gems/bundler-1.11.2/lib/bundler/runtime.rb:72:in `each'
    from /home/shibly/.gem/ruby/2.2.4/gems/bundler-1.11.2/lib/bundler/runtime.rb:72:in `block in require'
    from /home/shibly/.gem/ruby/2.2.4/gems/bundler-1.11.2/lib/bundler/runtime.rb:61:in `each'
    from /home/shibly/.gem/ruby/2.2.4/gems/bundler-1.11.2/lib/bundler/runtime.rb:61:in `require'
    from /home/shibly/.gem/ruby/2.2.4/gems/bundler-1.11.2/lib/bundler.rb:99:in `require'
    from /home/shibly/blog/config/application.rb:7:in `<top (required)>'
    from /home/shibly/.gem/ruby/2.2.4/gems/railties-4.2.5/lib/rails/commands/commands_tasks.rb:78:in `require'
    from /home/shibly/.gem/ruby/2.2.4/gems/railties-4.2.5/lib/rails/commands/commands_tasks.rb:78:in `block in server'
    from /home/shibly/.gem/ruby/2.2.4/gems/railties-4.2.5/lib/rails/commands/commands_tasks.rb:75:in `tap'
    from /home/shibly/.gem/ruby/2.2.4/gems/railties-4.2.5/lib/rails/commands/commands_tasks.rb:75:in `server'
    from /home/shibly/.gem/ruby/2.2.4/gems/railties-4.2.5/lib/rails/commands/commands_tasks.rb:39:in `run_command!'
    from /home/shibly/.gem/ruby/2.2.4/gems/railties-4.2.5/lib/rails/commands.rb:17:in `<top (required)>'
    from bin/rails:9:in `require'
    from bin/rails:9:in `<main>

【问题讨论】:

  • 这个问题你解决了吗?我有完全相同的问题。我在 ubuntu 上运行 ruby​​ 2.2.4 和 rails 4.2.5。
  • 试试 sudo apt-get install nodejs

标签: ruby-on-rails ruby-on-rails-4 server


【解决方案1】:

在默认的 Rails Gemfile 中,gem 'therubyracer' 的行被注释掉了。如果你取消注释,你会得到那个 gem,它应该可以工作。

来自“Getting Started with Rails”:

编译 CoffeeScript 和 JavaScript 资产压缩需要您的系统上有可用的 JavaScript 运行时,如果没有运行时,您将在资产编译期间看到 execjs 错误。通常 Mac OS X 和 Windows 都安装了 JavaScript 运行时。 Rails 将therubyracer gem 添加到生成的Gemfile 新应用的注释行中,如果需要,您可以取消注释。 therubyrhino 是 JRuby 用户推荐的运行时,默认添加到 JRuby 下生成的应用程序中的 Gemfile 中。您可以在 ExecJS 调查所有受支持的运行时。

【讨论】:

  • 谢谢!这比依赖 NodeJS 更容易而且看起来更干净。
  • 虽然这个答案有效,但你应该(用于生产)拥有一个合适的 execjs 运行时,比如 node.js
【解决方案2】:

您应该运行以下命令在 Ubuntu 中安装 NodeJS

sudo apt-get install nodejs

或者在 OSX 上运行这个

brew install nodejs

Uglifier 是一个 JS 包装器,它需要一个 JS 运行时运行或 JS 解释器。我会选择安装 NodeJS。

【讨论】:

  • 为什么需要 js env?
  • 它可以工作 :) 谢谢,但是为什么我们需要安装这个 nodejs 呢?
  • 我们需要一个 JS 运行时,@AlankarMore ;)。所以,NodeJS 这通常是我的选择,主要是因为它建立在 Chrome 的 V8 引擎 (developers.google.com/v8) 之上。我们今天在 Rails 有很多 JS。我们需要一个环境集来运行所有这些东西。这包括包装器、运行时/解释器...
  • 如果从源代码安装 nodejs,请确保二进制文件安装到 execjs 期望找到它的/usr/bin/nodejs
  • @AboozarRajabi Nodejs 不是必需的,但 JS 运行时或解释器是必需的。对于我们来说,这就是 NodeJS 的作用。如果不是 NodeJS,您将需要另一个 JS 运行时/解释器。
【解决方案3】:

创建数据库时出错。

问题是 Node.js 试图在脚本中没有sudo 的情况下安装:

sudo apt-get install nodejs

【讨论】:

    猜你喜欢
    • 2017-05-18
    • 2016-05-31
    • 1970-01-01
    • 1970-01-01
    • 2016-08-26
    • 1970-01-01
    • 2016-03-20
    • 2016-06-13
    相关资源
    最近更新 更多