簡単に結論
Node.jsのバージョンが古くてeslintが怒っていた
下記のコマンドでNode.jsをアップデートしたら解決しました!
sudo apt update && sudo apt install nodejs -y && sudo npm install n -g && sudo n stable && sudo apt purge -y nodejs npm && sudo apt update && sudo apt full-upgrade -y && sudo apt autoremove -y
経緯
-
開発途中でPCを買い替えたので、既にeslintやprettier、simple-git-hooks、lint-staged等の初期設定が終わっているGitレポジトリをクローンすることになりました
-
そんな訳で早速下記のコマンドを走らせて準備を終わらせる
git clone https://github.com/foooooooo/hogehoge.git cd hogehoge npm ci && npx simple-git-hooks
コマンドの簡単な解説
-
npm ci
- バージョンの縛りが緩いpackage.jsonを使ってパッケージをインストールする
npm i
若しくはnpm install
ではなく、パッケージのバージョンを細かく指定してあるpackage-lock.json を使ってパッケージをインストールする
- バージョンの縛りが緩いpackage.jsonを使ってパッケージをインストールする
-
npx simple-git-hooks
- package.jsonにsimple-git-hooksの設定がしてあるなら、その設定を元に /.git/hooks/ ディレクトリを作成し、設定通りの挙動が行われるようになる
-
npx lint-staged
(後で出てくるコマンド)- package.jsonにlint-stagedの設定がしてあるなら、その設定を元にcommitする前のファイル、つまりはstageされているファイルに対して設定されたコマンドを実行する
- 殆どの場合はeslintやprettier等のlinterやformatterを実行させる
-
npx eslint .
(後で出てくるコマンド)- eslintを現在地のディレクトリに対して実行する
-
-
初期設定が終わったけれど、一応simple-git-hooksやlint-stagedの設定がちゃんと行われているか確認しておくか!
npx lint-staged # => Unexpected Identifer というエラーが出る
?????????????????????????
何故?
これはlint-stagedがおかしいということ?git commit -m "commit test" # => Unexpected Identifer というエラーが出る
?????????????????????????
訳が分からないぞ
そもそもエラー文がUnexpected Identifer
、直訳して「予期しない識別子」だけで情報量が少なすぎるUnexpected Identifer
というエラー文をsimple-git-hooksやlint-staged、eslintなどのワードと一緒に調べても解答っぽい情報に全く引っ掛からないし、どうすればいいんだ……!?
結論
eslintが怒っていた
npx eslint .
# =>typeerror: module.createrequire is not a function...というエラーが出る
調べてみると、2022/9/18現在の最新バージョンであるeslint8.23.1がサポートしているnodejsのバージョンは
^12.22.0, ^14.17.0, or >=16.0.0 でした
一方、apt install nodejs
でインストールされるnode.jsのバージョンは2022/9/18現在10.19
思いっきりサポート対象外!!!!!!!!!!!
そりゃあ怒られる!!!!
そんな訳で下記のコマンドでNode.jsを最新のものに更新する 参考
sudo apt update && sudo apt install nodejs -y && sudo npm install n -g && sudo n stable && sudo apt purge -y nodejs npm && sudo apt update && sudo apt full-upgrade -y && sudo apt autoremove -y
これで上手くいきました!!!
参考資料