LoginSignup
0
0

More than 1 year has passed since last update.

git commitしてもlint-stageしても Unexpected Identifierと怒られる

Last updated at Posted at 2022-09-16

簡単に結論

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

経緯

  1. 開発途中でPCを買い替えたので、既にeslintやprettier、simple-git-hooks、lint-staged等の初期設定が終わっているGitレポジトリをクローンすることになりました

  2. そんな訳で早速下記のコマンドを走らせて準備を終わらせる

    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 を使ってパッケージをインストールする
    • 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を現在地のディレクトリに対して実行する

  3. 初期設定が終わったけれど、一応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 でした

参考資料としてeslintのレポジトリ

image.png


一方、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

これで上手くいきました!!!

参考資料

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0