尝试加载gem'uglifier'时出错。(捆绑器:: GemRequireError)


119

为什么会出现此错误?

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。
只是一个学习者

2
尝试sudo apt-get install nodejs
user3754535 2015年

Answers:


252

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

sudo apt-get install nodejs

或在OSX上运行

brew install nodejs

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


4
为什么需要js env?
DragonKnight

1
它可以工作:)谢谢,但是为什么我们需要安装这个nodejs?
Alankar更多2016年

1
我们需要一个JS Runtime,@AlankarMore;)。因此,NodeJS通常是我的选择,主要是因为它基于Chrome的V8引擎(developers.google.com/v8)构建。今天,在Rails上有很多JS。我们需要一个环境来运行所有这些东西。其中包括包装程序,运行时/解释器……
Marcos Serpa

1
如果从源代码安装nodejs,请确保将二进制文件安装到/usr/bin/nodejsexecjs期望找到它的位置。
RokStrniša'16

1
@AboozarRajabi Nodejs不是必需的,但是JS运行时或解释器是必需的。对于我们来说,这就是NodeJS的角色。如果不是NodeJS,则需要另一个JS运行时/解释器。
Marcos Serpa

36

在默认的Rails Gemfile中,注释掉宝石'therubyracer'的行。如果您取消注释,则将获得该宝石,它应该可以工作。

从“ Rails入门 ”:

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


2
谢谢!这比依赖NodeJS更容易,而且看起来更干净。
ConnorWGarvey

尽管此答案有效,但您应该宁可拥有(用于生产)适当的execjs运行时(如node.js)
Cyril Duchon-Doris

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.