Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Gemfile に 'jekyll-autoprefixer' があると jekyll serve でエラーに #85

Closed
MurakamiShinyu opened this issue Jun 17, 2021 · 3 comments
Assignees
Labels
bug Something isn't working

Comments

@MurakamiShinyu
Copy link
Member

ローカルでvivliostyle.orgサイトをテストするために bundle exec jekyll serve を実行すると、次のエラーが発生します:

jekyll 3.9.0 | Error: TypeError: Cannot read property 'version' of undefined

再現方法

$ git clone --depth=1 git@github.com:vivliostyle/vivliostyle.org.git
$ cd vivliostyle.org
$ bundle install
$ bundle exec jekyll serve

これで次のエラーメッセージ:

Configuration file: /Users/shinyu/test/vivliostyle.org/_config.yml
            Source: /Users/shinyu/test/vivliostyle.org
       Destination: /Users/shinyu/test/vivliostyle.org/_site
 Incremental build: disabled. Enable with --incremental
      Generating... 
jekyll 3.9.0 | Error:  TypeError: Cannot read property 'version' of undefined
Traceback (most recent call last):
        56: from /Users/shinyu/.rbenv/versions/2.7.3/bin/bundle:23:in `<main>'
        55: from /Users/shinyu/.rbenv/versions/2.7.3/bin/bundle:23:in `load'
        54: from /Users/shinyu/.rbenv/versions/2.7.3/lib/ruby/gems/2.7.0/gems/bundler-2.2.20/exe/bundle:37:in `<top (required)>'
        53: from /Users/shinyu/.rbenv/versions/2.7.3/lib/ruby/gems/2.7.0/gems/bundler-2.2.20/lib/bundler/friendly_errors.rb:128:in `with_friendly_errors'
        52: from /Users/shinyu/.rbenv/versions/2.7.3/lib/ruby/gems/2.7.0/gems/bundler-2.2.20/exe/bundle:49:in `block in <top (required)>'
        51: from /Users/shinyu/.rbenv/versions/2.7.3/lib/ruby/gems/2.7.0/gems/bundler-2.2.20/lib/bundler/cli.rb:24:in `start'
        50: from /Users/shinyu/.rbenv/versions/2.7.3/lib/ruby/gems/2.7.0/gems/bundler-2.2.20/lib/bundler/vendor/thor/lib/thor/base.rb:485:in `start'
        49: from /Users/shinyu/.rbenv/versions/2.7.3/lib/ruby/gems/2.7.0/gems/bundler-2.2.20/lib/bundler/cli.rb:30:in `dispatch'
        48: from /Users/shinyu/.rbenv/versions/2.7.3/lib/ruby/gems/2.7.0/gems/bundler-2.2.20/lib/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'
        47: from /Users/shinyu/.rbenv/versions/2.7.3/lib/ruby/gems/2.7.0/gems/bundler-2.2.20/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
        46: from /Users/shinyu/.rbenv/versions/2.7.3/lib/ruby/gems/2.7.0/gems/bundler-2.2.20/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
        45: from /Users/shinyu/.rbenv/versions/2.7.3/lib/ruby/gems/2.7.0/gems/bundler-2.2.20/lib/bundler/cli.rb:474:in `exec'
        44: from /Users/shinyu/.rbenv/versions/2.7.3/lib/ruby/gems/2.7.0/gems/bundler-2.2.20/lib/bundler/cli/exec.rb:28:in `run'
        43: from /Users/shinyu/.rbenv/versions/2.7.3/lib/ruby/gems/2.7.0/gems/bundler-2.2.20/lib/bundler/cli/exec.rb:63:in `kernel_load'
        42: from /Users/shinyu/.rbenv/versions/2.7.3/lib/ruby/gems/2.7.0/gems/bundler-2.2.20/lib/bundler/cli/exec.rb:63:in `load'
        41: from /Users/shinyu/.rbenv/versions/2.7.3/bin/jekyll:23:in `<top (required)>'
        40: from /Users/shinyu/.rbenv/versions/2.7.3/bin/jekyll:23:in `load'
        39: from /Users/shinyu/.rbenv/versions/2.7.3/lib/ruby/gems/2.7.0/gems/jekyll-3.9.0/exe/jekyll:15:in `<top (required)>'
        38: from /Users/shinyu/.rbenv/versions/2.7.3/lib/ruby/gems/2.7.0/gems/mercenary-0.3.6/lib/mercenary.rb:19:in `program'
        37: from /Users/shinyu/.rbenv/versions/2.7.3/lib/ruby/gems/2.7.0/gems/mercenary-0.3.6/lib/mercenary/program.rb:42:in `go'
        36: from /Users/shinyu/.rbenv/versions/2.7.3/lib/ruby/gems/2.7.0/gems/mercenary-0.3.6/lib/mercenary/command.rb:220:in `execute'
        35: from /Users/shinyu/.rbenv/versions/2.7.3/lib/ruby/gems/2.7.0/gems/mercenary-0.3.6/lib/mercenary/command.rb:220:in `each'
        34: from /Users/shinyu/.rbenv/versions/2.7.3/lib/ruby/gems/2.7.0/gems/mercenary-0.3.6/lib/mercenary/command.rb:220:in `block in execute'
        33: from /Users/shinyu/.rbenv/versions/2.7.3/lib/ruby/gems/2.7.0/gems/jekyll-3.9.0/lib/jekyll/commands/serve.rb:75:in `block (2 levels) in init_with_program'
        32: from /Users/shinyu/.rbenv/versions/2.7.3/lib/ruby/gems/2.7.0/gems/jekyll-3.9.0/lib/jekyll/commands/serve.rb:93:in `start'
        31: from /Users/shinyu/.rbenv/versions/2.7.3/lib/ruby/gems/2.7.0/gems/jekyll-3.9.0/lib/jekyll/commands/serve.rb:93:in `each'
        30: from /Users/shinyu/.rbenv/versions/2.7.3/lib/ruby/gems/2.7.0/gems/jekyll-3.9.0/lib/jekyll/commands/serve.rb:93:in `block in start'
        29: from /Users/shinyu/.rbenv/versions/2.7.3/lib/ruby/gems/2.7.0/gems/jekyll-3.9.0/lib/jekyll/commands/build.rb:36:in `process'
        28: from /Users/shinyu/.rbenv/versions/2.7.3/lib/ruby/gems/2.7.0/gems/jekyll-3.9.0/lib/jekyll/commands/build.rb:65:in `build'
        27: from /Users/shinyu/.rbenv/versions/2.7.3/lib/ruby/gems/2.7.0/gems/jekyll-3.9.0/lib/jekyll/command.rb:28:in `process_site'
        26: from /Users/shinyu/.rbenv/versions/2.7.3/lib/ruby/gems/2.7.0/gems/jekyll-3.9.0/lib/jekyll/site.rb:73:in `process'
        25: from /Users/shinyu/.rbenv/versions/2.7.3/lib/ruby/gems/2.7.0/gems/jekyll-3.9.0/lib/jekyll/site.rb:212:in `write'
        24: from /Users/shinyu/.rbenv/versions/2.7.3/lib/ruby/gems/2.7.0/gems/jekyll-3.9.0/lib/jekyll/hooks.rb:102:in `trigger'
        23: from /Users/shinyu/.rbenv/versions/2.7.3/lib/ruby/gems/2.7.0/gems/jekyll-3.9.0/lib/jekyll/hooks.rb:102:in `each'
        22: from /Users/shinyu/.rbenv/versions/2.7.3/lib/ruby/gems/2.7.0/gems/jekyll-3.9.0/lib/jekyll/hooks.rb:103:in `block in trigger'
        21: from /Users/shinyu/.rbenv/versions/2.7.3/lib/ruby/gems/2.7.0/gems/jekyll-autoprefixer-1.0.2/lib/jekyll-autoprefixer.rb:24:in `block in <top (required)>'
        20: from /Users/shinyu/.rbenv/versions/2.7.3/lib/ruby/gems/2.7.0/gems/jekyll-autoprefixer-1.0.2/lib/jekyll/autoprefixer/autoprefixer.rb:20:in `process'
        19: from /Users/shinyu/.rbenv/versions/2.7.3/lib/ruby/gems/2.7.0/gems/jekyll-autoprefixer-1.0.2/lib/jekyll/autoprefixer/autoprefixer.rb:20:in `each'
        18: from /Users/shinyu/.rbenv/versions/2.7.3/lib/ruby/gems/2.7.0/gems/jekyll-autoprefixer-1.0.2/lib/jekyll/autoprefixer/autoprefixer.rb:23:in `block in process'
        17: from /Users/shinyu/.rbenv/versions/2.7.3/lib/ruby/gems/2.7.0/gems/jekyll-autoprefixer-1.0.2/lib/jekyll/autoprefixer/autoprefixer.rb:23:in `open'
        16: from /Users/shinyu/.rbenv/versions/2.7.3/lib/ruby/gems/2.7.0/gems/jekyll-autoprefixer-1.0.2/lib/jekyll/autoprefixer/autoprefixer.rb:27:in `block (2 levels) in process'
        15: from /Users/shinyu/.rbenv/versions/2.7.3/lib/ruby/gems/2.7.0/gems/autoprefixer-rails-9.8.6.5/lib/autoprefixer-rails.rb:16:in `process'
        14: from /Users/shinyu/.rbenv/versions/2.7.3/lib/ruby/gems/2.7.0/gems/autoprefixer-rails-9.8.6.5/lib/autoprefixer-rails/processor.rb:53:in `process'
        13: from /Users/shinyu/.rbenv/versions/2.7.3/lib/ruby/gems/2.7.0/gems/autoprefixer-rails-9.8.6.5/lib/autoprefixer-rails/processor.rb:170:in `runtime'
        12: from /Users/shinyu/.rbenv/versions/2.7.3/lib/ruby/gems/2.7.0/gems/execjs-2.8.1/lib/execjs/runtime.rb:64:in `eval'
        11: from /Users/shinyu/.rbenv/versions/2.7.3/lib/ruby/gems/2.7.0/gems/execjs-2.8.1/lib/execjs/external_runtime.rb:21:in `eval'
        10: from /Users/shinyu/.rbenv/versions/2.7.3/lib/ruby/gems/2.7.0/gems/execjs-2.8.1/lib/execjs/external_runtime.rb:39:in `exec'
         9: from Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:76:12)
         8: from Function.Module._load (node:internal/modules/cjs/loader:829:14)
         7: from Module.load (node:internal/modules/cjs/loader:989:32)
         6: from Object.Module._extensions..js (node:internal/modules/cjs/loader:1138:10)
         5: from Module._compile (node:internal/modules/cjs/loader:1109:14)
         4: from Object.<anonymous> ((execjs):1:58)
         3: from (execjs):1:40
         2: from (execjs):19:14
         1: from (execjs):1:213
eval (eval at <anonymous> ((execjs):1:213), <anonymous>:1:10): TypeError: Cannot read property 'version' of undefined (ExecJS::ProgramError)

Gemfile の gem 'jekyll-autoprefixer' が問題?

Gemfile

vivliostyle.org/Gemfile

Lines 12 to 16 in f1c2633

group :jekyll_plugins do
gem 'github-pages'
gem 'jekyll-autoprefixer'
gem 'jekyll-archives'
end

gem 'jekyll-autoprefixer' を削除してから、実行すると正常に実行できました。この jekyll-autoprefixer' が問題と関係しているようです。

'jekyll-autoprefixer' はもともと機能していなかった?

Gemfileのコミット履歴を見ると、d97b08f

Add CSS autoprefixer
@yamasy1549 committed on Mar 31, 2020

で、 gem 'jekyll-autoprefixer' が追加されています。
最近まではエラーが起きることはなかったのが、依存する何かが更新されたことなどで、エラーが起きるようになったと思われます。

しかし、これまでこの 'jekyll-autoprefixer' が機能していたのか、疑問です。このサイトのCSSファイル
https://vivliostyle.org/assets/2020styles.css
を見る限りでは autoprefixer が付加しているようなプロパティ名のプレフィックス("-moz-" など)が見当たりません。

今までは機能していなくて、悪影響もなかった、(それが今はなぜか悪影響が出るようになった)ということでないでしょうか?
そうであれば、Gemfileから削除してしまってよいのでないでしょうか?

@MurakamiShinyu
Copy link
Member Author

ローカルでvivliostyle.orgサイトをテストするために bundle exec jekyll serve を実行すると、次のエラーが発生します:

jekyll 3.9.0 | Error: TypeError: Cannot read property 'version' of undefined

...

最近まではエラーが起きることはなかったのが、依存する何かが更新されたことなどで、エラーが起きるようになったと思われます。

jekyll-autoprefixerautoprefixer-rails に依存し、autoprefixer-rails は ExecJS に依存してます。最近の ExecJS の更新(v2.7→v2.8)の影響で問題が起きていることが分かりました。

この問題はautoprefixer-railsの最新版 10.2.5.1 で修正されて、jekyll-autoprefixer にもそれを反映させる pull request "Update autoprefixer-rails to fix execjs issue" vwochnik/jekyll-autoprefixer#13 が既にありました。しかし、現時点でこのPRがまだマージされていないので、このエラーが起きているということです。

いずれにしても、これまでも jekyll-autoprefixer はvivliostyle.orgサイトで機能していなかったようなので、削除してよいと思います。

@yamasy1549
Copy link
Member

@MurakamiShinyu 調査ありがとうございます。ちょっと立て込んでるので他のissueもまとめて週末に対応します!

@yamasy1549
Copy link
Member

jekyll-autoprefixer を削除しました。
669a7c9

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants