【rails】Heroku 「gyp ERR! configure error」

  • #Rails
  • #Ruby
  • #デプロイ

Herokuにデプロイするとエラーが起こる

関連記事:【rails】Heroku rubygemsのバージョン対象外

前回、ffiのバージョンを下げることでrubygemsに関するエラーは解決したものの、新たなエラーが発生

備忘録としてエラー解消方法を残しておく


開発環境

ruby 2.7.7

Rails 6.0.6.1

MacOS sonoma14.5


エラー内容

-----> Building on the Heroku-20 stack

# 長文すぎるので割愛

       SyntaxError: EOL while scanning string literal
       gyp ERR! configure error 
       gyp ERR! stack Error: `gyp` failed with exit code: 1
       gyp ERR! stack     at ChildProcess.onCpExit (/tmp/build_66375367/node_modules/node-gyp/lib/configure.js:345:16)
       gyp ERR! stack     at ChildProcess.emit (node:events:514:28)
       gyp ERR! stack     at ChildProcess._handle.onexit (node:internal/child_process:294:12)
       gyp ERR! System Linux 6.1.109-118.189.amzn2023.x86_64
       gyp ERR! command "/tmp/build_66375367/bin/node" "/tmp/build_66375367/node_modules/node-gyp/bin/node-gyp.js" "rebuild" "--verbose" "--libsass_ext=" "--libsass_cflags=" "--libsass_ldflags=" "--libsass_library="
       gyp ERR! cwd /tmp/build_66375367/node_modules/node-sass
       gyp ERR! node -v v20.9.0
       gyp ERR! node-gyp -v v3.8.0
       gyp ERR! not ok 
       Build failed with error code: 1

 !
 !     Precompiling assets failed.
 !
 !     Push rejected, failed to compile Ruby app.
 !     Push failed

Deploy Branch後、これまでよりかなり時間がかかったのでデプロイ成功を期待!するも、エラーが発生


EOL while scanning string literal

このエラーをまずGoogle検索したところ、Pythonだけどこちらの記事を発見

[

参考

SyntaxError: SyntaxError EOL while scanning string literalの読み解き方と解決方法を紹介します

Python学習チャンネル by PyQ

](https://blog.pyq.jp/entry/Python_kaiketsu_181122)

文字列の定義に文法ミスがあるときはSyntaxError: EOL while scanning string literal というエラーメッセージが表示されます。

文字列リテラルとは、シングルクォート'やダブルクォート"で括られた文字列のことを指します。

つまり、コードの途中で「’」「”」を閉じていない可能性があるとのこと

(ここまで何となく分かったものの、コードに該当箇所が見つからなかったため、いったん置いておきました)


gyp ERR! configure error

次はこのエラーをそのまま検索し、こちらの記事を発見

[

参考

yarnコマンドで発生したgyp ERR!の原因究明と対処方法

行動すれば次の現実

](https://blog.furu07yu.com/entry/yarn-gyp-err)

yarnコマンドは実行していないけど、以下のエラーが解消できそう

gyp ERR! cwd /tmp/build_66375367/node_modules/node-sass

node-sassに依存しているライブラリがあるらしい


依存しているライブラリを探す

yarn why node-sassで、依存しているライブラリを探す

yarn why node-sass

yarn why v1.22.22
[1/4] 🤔  Why do we have the module "node-sass"...?
[2/4] 🚚  Initialising dependency graph...
[3/4] 🔍  Finding dependency...
[4/4] 🚡  Calculating file sizes...
=> Found "node-sass@4.14.1"
info Reasons this module exists
   - "@rails#webpacker" depends on it
   - Hoisted from "@rails#webpacker#node-sass"
info Disk size without dependencies: "6.05MB"
info Disk size with unique dependencies: "14.23MB"
info Disk size with transitive dependencies: "27.02MB"
info Number of shared dependencies: 73
✨  Done in 0.66s.

"@rails#webpacker" depends on itとある

→参考記事と同様、@rails#webpackerで使用されているnode-sassのバージョンに問題があることがわかる


解決方法

@rails#webpackerのバージョンを上げる

package.jsonにて、"@rails/webpacker": “4.3.0”,を"^5.4.3”に上げる

    "@rails/webpacker": "^5.4.3",

今回表示されたエラーはこれで解決できた!

#DAY26