👍

Crowi 2.0 開発日記 #3

に公開

というわけで、前回の続き

https://zenn.dev/sotarok/articles/8c8164258fffe5

TL;DR

  • ともあれ、build が通った
  • npm run dev も動くようになった
  • さあ!どうなる!

Codebase changes

前回~ 5b96932295476dca97907da8163a208854b610b1

https://github.com/crowi/crowi/compare/8d25ddf87e1f12f6c26a9fe8b694eaa109140e61...dev2

Type Error の修正

  • error object 周り (unknownになるアレ) の修正
  • その他ちょこまかとエラーが出てるところ
  • あとでどうせ修正するやろってところはもういったんany
  • そもそも既存コードにanyが多くて吐き気がする!たいへん!コードも補完してくれないし!ジャンプもできない!
  • まあこの辺はAIさんにお願いすると結構やっていけそうな気がする
  • とりあえずの目的のためにanyで乗り切ることが大事なんだよanyway

undefined function

この辺なんかちょっとおかしいわw
あれ、今まで /me って動いてたんだっけ...
動いてなかったんだっけ...

とりあえず build が通った 🎉

  • tsc できた
  • npm run dev もできたのでいったん動いた
  • view が削除されてしまっているので、curl とかでセッション作らないといけなくて面倒くさい
    • 簡易的なログインセッション作ってデータを見れる何かを作りたいw

これからの開発準備として monogodb 8

Docker Official Image の mongo だと latest は 8.0.8 で、これでいったん手元のサーバーを構築したい。

docker run -d --name crowi-mongo8 -p 37017:27017 -v "$(pwd)/data/mongodb:/data/db" mongo

で、atlas で動いてる自分の wiki から mongodump してきて (以下のコマンドで適当な手元のバックアップディレクトリにデータを置いた)

docker run --rm -v "$(pwd)":/backup mongo bash -c 'cd /backup && mongodump --uri mongodb+srv://{CLUSTERNAME}:{PWD}@strkwikicluster0.ni5ar.mongodb.net/{DBNAME}'

で、そのディレクトリ({DBNAME}のディレクトリが作られる) の1個上で、以下:

docker run --rm --link crowi-mongo8:mm -v "$(pwd)"/{DBNAME}/:/backup mongo bash -c 'mongorestore --db crowi_strkwiki1 --host mm /backup'

そうすると、一旦は、

  • 現行 ver の Crowi が使っているデータを、
  • 手元の mongo 8 に置く

ということができたことになるので、これを読めるような Crowi API Server ができれば互換性があるということになりそう。

これからどうしようかな

いったん:

  • build は通って、ts-node での dev もできるのだが、npm start できない
    • (相対pathの問題なので多分 tsconfig かどこかで問題がありそう
  • ので、これを修正する

ということはまあ決まっていて、そうすると、build できて、dev も prod も動くという状態まで来るので、そうなったらようやく次。

mongoose の update

  • mongoose が5系だったが、今最新は8系なのでそちらに移行したい
  • mongodb は、atlas の8系で、現行 (1.8) Crowi も動いているので、データ構造自体にクリティカルな非互換なものはなさそう
  • なので、基本は、Node、TypeScript のバージョンを上げていって必要なバージョンアップができれば、問題なく動きそうではある

node を v20 まであげる

  • 今 v14 → v16 で動いた状態にはなったので...
  • v20 を目指してもりもりいきましょい
  • node周りはそんなに問題になるところはないと思うのだけど多分...

その他必要なパッケージを再度設定する

  • jest, eslint など、一時的にオフにしているものを復活させる

そのあと

  • monorepo化する
  • フロントエンドの開発を始める

Discord

引き続き、Discord は興味本位でも、冷やかしでも、アドバイスでも、お手伝いでも大歓迎ですので、ぜひ遊びに来てください!

https://discord.gg/jnWzJeu

Discussion