TIL概要
単純に調査したmemo書き ~ 調べて書いた記事の中間ぐらいのもの。
知らんけどぐらいの温度感ではないですが、ちゃんと調べきってないものもあるので、適応する時はお気をつけください。
実際にやってみての感想や躓いたところなどを整理するためのもの。
apollo server update概要
apollo server v3 が 2024/10 でEOLを迎えていた。
https://www.apollographql.com/blog/apollo-server-3-end-of-life-extension
公式のアナウンスを見ると、そもそも2023年にはEOLの予定だったがコミュニティからの反発が強く延期したとのこと。
まぁなので何かあった時にsecurity patchあててくれるか?とかはちょっとわからんすね。
やってみた感想
- やや破壊的な変更。とはいえimport先変わるのがメイン
- apollo server流行ったのが2020年あたりなので、その辺に立ち上げた後あまりメンテされてないpjは多いかも
- ちなみにその場合、関連ライブラリの対応も漏れなく必要になります
- TS
- node
- graphql
- jest
- ちなみにその場合、関連ライブラリの対応も漏れなく必要になります
- docsがしっかりしていたので基本的にそれに従えばOK
- すごいご丁寧にmigrationのチュートリアルがあったけど、あれはしなくていいと思います
- https://www.apollographql.com/docs/apollo-server/migration
apollo serverとは
触るまでは「なんか code genとかでtypeを生成してくれるqraphqlのやつだよね?」ぐらいの理解度。触ったことでかなり理解度が上がった。
apollo server は graphql server。
graphql, graphql server, web server あたりが登場人物。
すごくざっくりは
graphql → 言語
graphql server → graphqlを受け取りweb serverに渡す
web server → そのまま。tsだとexpressとかっすかね
という理解。(それ以外にも色々やってそうだけど大枠での理解はこんなもん)
なので概要にもある通り、apollo server 単体を上げればいいという話にはならなかった。
詰まったところ
ライブラリアップデートがドミノ倒しみたいに発生する
これはメジャーアップデートあるあるですね。
大抵 npm i
した時にerror吐いてくれるので言われた通りversionあげるのが吉(一応無視できるのもあるけど、基本は無視しない)
で、あげてったライブラリのmigration guideみたり、changes追いかけるしかない。
あとは地道な動作確認。当然ですが、事前にtest用意できてればそれに越したことはない。
Property 'executeOperation' does not exist on type 'ApolloServer'.
今回jestは初めて使いました。でびっくりしたのが、jest(ts)ってtest実行時にコンパイルしてるっぽいですね??
↑のerrorが出て、ただIDE上やinstallしてるnode_modules の型定義直接みてもやっぱり問題なくて詰まりました。
結論的には jest, ts あたりのpackageをupdateで解決しました。
devDependenciesだったのでそこまで深追いしませんでしたが、tsがversion5あたりで、デコレーターやらクラス周りがちょっと変わってたような気がしなくもないのでその辺かな~~と
さいごに
バックエンドTS初めて触ったけど、ORMがしんどいな...