Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Bundler 2.0.2和Jekyll/Gulp已安装,但仍获得;必须使用捆绑机2或更高版本;消息_Javascript_Ruby_Gulp_Jekyll_Bundler - Fatal编程技术网

Javascript Bundler 2.0.2和Jekyll/Gulp已安装,但仍获得;必须使用捆绑机2或更高版本;消息

Javascript Bundler 2.0.2和Jekyll/Gulp已安装,但仍获得;必须使用捆绑机2或更高版本;消息,javascript,ruby,gulp,jekyll,bundler,Javascript,Ruby,Gulp,Jekyll,Bundler,我遇到了一个问题,Jekyll/Gulp安装失败,我不断收到的信息是“必须使用Bundler 2或更高版本”,即使我安装了Bundler 2.0.2。还有其他类似的问题,但这些项目是基于Rails和Heroku的。到目前为止,我找到的解决方案中没有一个不适合我 终端显示我安装了与Gemfile.lock中列出的相同版本的Bundler fs-217-156:jekyll-gulp mrjandre$ bundler -v Bundler version 2.0.2 我正在运行Ruby 2.6.

我遇到了一个问题,Jekyll/Gulp安装失败,我不断收到的信息是“必须使用Bundler 2或更高版本”,即使我安装了Bundler 2.0.2。还有其他类似的问题,但这些项目是基于Rails和Heroku的。到目前为止,我找到的解决方案中没有一个不适合我

终端显示我安装了与Gemfile.lock中列出的相同版本的Bundler

fs-217-156:jekyll-gulp mrjandre$ bundler -v
Bundler version 2.0.2
我正在运行Ruby 2.6.5:

fs-217-156:jekyll-gulp mrjandre$ ruby -v
ruby 2.6.5p114 (2019-10-01 revision 67812) [x86_64-darwin17]
从Gemfile.lock:

PLATFORMS
  ruby
  x64-mingw32

DEPENDENCIES
  jekyll (~> 3.8.5)
  jekyll-feed (~> 0.6)
  tzinfo-data

BUNDLED WITH
   2.0.2
在过去的几天里,我尝试卸载和重新安装Bundler和Jekyll至少十几次

gem uninstall bundler
不知道binstubs是什么,但我也尝试了一下:

bundle binstubs bundler
“大口喝”的结果:

fs-217-156:jekyll-gulp mrjandre$ gulp
[09:48:24] Using gulpfile ~/Desktop/Repos/jekyll-gulp/gulpfile.js
[09:48:24] Starting 'default'...
[09:48:24] Starting 'styles'...
[09:48:25] Finished 'styles' after 928 ms
[09:48:25] Starting 'scripts'...
[09:48:27] Finished 'scripts' after 1.35 s
[09:48:27] Starting 'images'...
[09:48:27] Finished 'images' after 3.84 ms
[09:48:27] Starting 'jekyll-build'...
Traceback (most recent call last):
    13: from /usr/local/bin/jekyll:22:in `<main>'
    12: from /usr/local/bin/jekyll:22:in `load'
    11: from /usr/local/lib/ruby/gems/2.6.0/gems/jekyll-4.0.0/exe/jekyll:11:in `<top (required)>'
    10: from /usr/local/lib/ruby/gems/2.6.0/gems/jekyll-4.0.0/lib/jekyll/plugin_manager.rb:52:in `require_from_bundler'
     9: from /usr/local/Cellar/ruby/2.6.5/lib/ruby/2.6.0/bundler.rb:101:in `setup'
     8: from /usr/local/Cellar/ruby/2.6.5/lib/ruby/2.6.0/bundler.rb:135:in `definition'
     7: from /usr/local/Cellar/ruby/2.6.5/lib/ruby/2.6.0/bundler/definition.rb:34:in `build'
     6: from /usr/local/Cellar/ruby/2.6.5/lib/ruby/2.6.0/bundler/dsl.rb:13:in `evaluate'
     5: from /usr/local/Cellar/ruby/2.6.5/lib/ruby/2.6.0/bundler/dsl.rb:234:in `to_definition'
     4: from /usr/local/Cellar/ruby/2.6.5/lib/ruby/2.6.0/bundler/dsl.rb:234:in `new'
     3: from /usr/local/Cellar/ruby/2.6.5/lib/ruby/2.6.0/bundler/definition.rb:83:in `initialize'
     2: from /usr/local/Cellar/ruby/2.6.5/lib/ruby/2.6.0/bundler/definition.rb:83:in `new'
     1: from /usr/local/Cellar/ruby/2.6.5/lib/ruby/2.6.0/bundler/lockfile_parser.rb:95:in `initialize'
/usr/local/Cellar/ruby/2.6.5/lib/ruby/2.6.0/bundler/lockfile_parser.rb:108:in `warn_for_outdated_bundler_version': You must use Bundler 2 or greater with this lockfile. (Bundler::LockfileError)
[09:48:27] 'jekyll-build' errored after 612 ms
[09:48:27] Error: exited with error code: 1
    at ChildProcess.onexit (/Users/mrjandre/Desktop/Repos/jekyll-gulp/node_modules/end-of-stream/index.js:39:36)
    at emitTwo (events.js:126:13)
    at ChildProcess.emit (events.js:214:7)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:198:12)
[09:48:27] 'default' errored after 2.9 s
我还删除了
node\u模块
,重新安装了这些依赖项几次,运行了
npm审计修复程序
,并更新了npm

我经常在MacOSX和Windows10之间切换,这种设置在这两个系统上已经可靠多年了。如果您有任何建议,我将不胜感激。如果我遗漏了什么,我很乐意提供更多信息

编辑:该问题于2019-10-30年得到解决

如果您按照安装了Jekyll,那么您通过自制获得了Ruby 2.6.5,那么根本的问题是自制(直到2019-10-30)错误地配置了RubyGems,使得Ruby或多或少无法加载任何新版本,例如
bundler

错误配置在于覆盖
/usr/local/ceral/ruby/2.6.5/lib/ruby/2.6.0/rubygems/defaults/operating_system.rb
中的
default_dir
,显然是试图将“标准”gem安装文件夹移动到
/usr/local/lib/ruby/gems/2.6.0

但是,
default\u目录
需要指向
/usr/local/ceral/ruby/2.6.5/lib/ruby/gems/2.6.0
,因为它包含带有默认gem规范的
specifications/default
文件夹。 如果无法从
Gem::Specification::default\u specifications\u dir
加载默认Gem,则RubyGems对
require
的覆盖将不会激活默认Gem的较新版本,即使已安装并找到它们,这将阻止加载bundler 2.0.2。非默认gems(如Jekyll)仍按预期加载

由于自制RubyGems配置错误,导致的问题是路径中的
bundler
命令将是用户安装的v2.0.2,因为您执行了
gem安装--user install bundler jekyll
,并将用户安装路径(
$HOME/.gem/ruby/2.6.0/bin
)添加到了$path中,然而,由于配置错误,
jekyll
命令只能看到并使用默认的绑定器gem v1.17.2,而这些版本不匹配会导致您的问题

等待自制软件修复Ruby公式,您可以用以下内容替换operating_system.rb中的错误配置

module Gem
  class << self
    alias :old_default_dir :default_dir
    alias :old_default_path :default_path
    alias :old_default_bindir :default_bindir
    alias :old_ruby :ruby
  end

  def self.homebrew_gems_dir
    path = [
      "/usr/local",
      "lib",
      "ruby",
      "gems",
      "2.6.0"
    ]
    File.join(*path)
  end

  def self.default_path
    path = []
    path << homebrew_gems_dir
    path << user_dir if user_home && File.exist?(user_home)
    path << default_dir
    path << vendor_dir if vendor_dir and File.directory? vendor_dir
    path
  end

  def self.default_bindir
    "/usr/local/lib/ruby/gems/2.6.0/bin"
  end

  def self.ruby
    "/usr/local/opt/ruby/bin/ruby"
  end
end
模块Gem
班
bundle binstubs bundler
fs-217-156:jekyll-gulp mrjandre$ gulp
[09:48:24] Using gulpfile ~/Desktop/Repos/jekyll-gulp/gulpfile.js
[09:48:24] Starting 'default'...
[09:48:24] Starting 'styles'...
[09:48:25] Finished 'styles' after 928 ms
[09:48:25] Starting 'scripts'...
[09:48:27] Finished 'scripts' after 1.35 s
[09:48:27] Starting 'images'...
[09:48:27] Finished 'images' after 3.84 ms
[09:48:27] Starting 'jekyll-build'...
Traceback (most recent call last):
    13: from /usr/local/bin/jekyll:22:in `<main>'
    12: from /usr/local/bin/jekyll:22:in `load'
    11: from /usr/local/lib/ruby/gems/2.6.0/gems/jekyll-4.0.0/exe/jekyll:11:in `<top (required)>'
    10: from /usr/local/lib/ruby/gems/2.6.0/gems/jekyll-4.0.0/lib/jekyll/plugin_manager.rb:52:in `require_from_bundler'
     9: from /usr/local/Cellar/ruby/2.6.5/lib/ruby/2.6.0/bundler.rb:101:in `setup'
     8: from /usr/local/Cellar/ruby/2.6.5/lib/ruby/2.6.0/bundler.rb:135:in `definition'
     7: from /usr/local/Cellar/ruby/2.6.5/lib/ruby/2.6.0/bundler/definition.rb:34:in `build'
     6: from /usr/local/Cellar/ruby/2.6.5/lib/ruby/2.6.0/bundler/dsl.rb:13:in `evaluate'
     5: from /usr/local/Cellar/ruby/2.6.5/lib/ruby/2.6.0/bundler/dsl.rb:234:in `to_definition'
     4: from /usr/local/Cellar/ruby/2.6.5/lib/ruby/2.6.0/bundler/dsl.rb:234:in `new'
     3: from /usr/local/Cellar/ruby/2.6.5/lib/ruby/2.6.0/bundler/definition.rb:83:in `initialize'
     2: from /usr/local/Cellar/ruby/2.6.5/lib/ruby/2.6.0/bundler/definition.rb:83:in `new'
     1: from /usr/local/Cellar/ruby/2.6.5/lib/ruby/2.6.0/bundler/lockfile_parser.rb:95:in `initialize'
/usr/local/Cellar/ruby/2.6.5/lib/ruby/2.6.0/bundler/lockfile_parser.rb:108:in `warn_for_outdated_bundler_version': You must use Bundler 2 or greater with this lockfile. (Bundler::LockfileError)
[09:48:27] 'jekyll-build' errored after 612 ms
[09:48:27] Error: exited with error code: 1
    at ChildProcess.onexit (/Users/mrjandre/Desktop/Repos/jekyll-gulp/node_modules/end-of-stream/index.js:39:36)
    at emitTwo (events.js:126:13)
    at ChildProcess.emit (events.js:214:7)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:198:12)
[09:48:27] 'default' errored after 2.9 s
gulp.task("jekyll-build", function () {
  return cp.spawn( jekyll , ["build"], {stdio: "inherit"})
});
module Gem
  class << self
    alias :old_default_dir :default_dir
    alias :old_default_path :default_path
    alias :old_default_bindir :default_bindir
    alias :old_ruby :ruby
  end

  def self.homebrew_gems_dir
    path = [
      "/usr/local",
      "lib",
      "ruby",
      "gems",
      "2.6.0"
    ]
    File.join(*path)
  end

  def self.default_path
    path = []
    path << homebrew_gems_dir
    path << user_dir if user_home && File.exist?(user_home)
    path << default_dir
    path << vendor_dir if vendor_dir and File.directory? vendor_dir
    path
  end

  def self.default_bindir
    "/usr/local/lib/ruby/gems/2.6.0/bin"
  end

  def self.ruby
    "/usr/local/opt/ruby/bin/ruby"
  end
end