【rails】Heroku 「gyp ERR! configure error」

※本サイトで紹介している商品・サービス等の外部リンクには、アフィリエイト広告が含まれる場合があります。

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

前回、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: EOL while scanning string literal というエラーメッセージが表示されます。

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

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

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


gyp ERR! configure error

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

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