简体   繁体   中英

Ruby error: cannot load such file — wdm (LoadError)

I've been having some major issues with Jekyll on windows. I finally get it working so i run

jekyll build

Then

jekyll serve --watch

Then i get the following error, can anyone help?

The full error is:

C:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require':
cannot load such file -- wdm (LoadError)
        from C:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:i
n `require'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/listen-1.3.1/lib/listen/adapter
.rb:207:in `load_dependent_adapter'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/listen-1.3.1/lib/listen/adapter
s/windows.rb:33:in `load_dependent_adapter'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/listen-1.3.1/lib/listen/adapter
.rb:198:in `usable?'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/listen-1.3.1/lib/listen/adapter
s/windows.rb:25:in `usable?'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/listen-1.3.1/lib/listen/adapter
.rb:190:in `usable_and_works?'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/listen-1.3.1/lib/listen/adapter
.rb:57:in `block in select_and_initialize'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/listen-1.3.1/lib/listen/adapter
.rb:55:in `each'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/listen-1.3.1/lib/listen/adapter
.rb:55:in `select_and_initialize'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/listen-1.3.1/lib/listen/listene
r.rb:291:in `initialize_adapter'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/listen-1.3.1/lib/listen/listene
r.rb:283:in `setup'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/listen-1.3.1/lib/listen/listene
r.rb:52:in `start'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/jekyll-1.4.0/lib/jekyll/command
s/build.rb:56:in `watch'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/jekyll-1.4.0/lib/jekyll/command
s/build.rb:8:in `process'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/jekyll-1.4.0/bin/jekyll:97:in `
block (2 levels) in <top (required)>'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/commander-4.1.5/lib/commander/c
ommand.rb:180:in `call'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/commander-4.1.5/lib/commander/c
ommand.rb:180:in `call'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/commander-4.1.5/lib/commander/c
ommand.rb:155:in `run'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/commander-4.1.5/lib/commander/r
unner.rb:402:in `run_active_command'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/commander-4.1.5/lib/commander/r
unner.rb:66:in `run!'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/commander-4.1.5/lib/commander/d
elegates.rb:11:in `run!'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/commander-4.1.5/lib/commander/i
mport.rb:10:in `block in <top (required)>'

I had the same problem. Fixed the problem very simply by setting "Windows Directory Monitor".

gem install wdm

And Include this line in the Gemfile:

gem 'wdm'

Good luck!

You seem to be running on a very old version of the listen gem (1.3.1). Try to update to latest (2.4.0)

$ gem update listen

In your Gemfile :

require 'rbconfig'

gem 'listen', '~> 2.4'
gem 'wdm', '>= 0.1.0' if RbConfig::CONFIG['target_os'] =~ /mswin|mingw|cygwin/i

Added the gem wdm since i'm not sure if the listen gem will require it by itself but as the readme states this is optional, otherwise it will fallback to polling which is a less efficient way of doing it.

This blog post says:

# If you get the following error with the –watch option

C:/Ruby193/lib/ruby/gems/1.9.1/gems/listen-1.3.1/lib/listen/adapter.rb:207:in `require': cannot load such file -- wdm (LoadError)

# To fix that error, open the gemfile in your jekyll project directory and add these two lines:

require 'rbconfig'
gem 'wdm', '>= 0.1.0' if RbConfig::CONFIG['target_os'] =~ /mswin|mingw/i

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM