0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

TIL: apollo server update for v4

Last updated at Posted at 2025-04-02

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

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がしんどいな...

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?