見出し画像

octokitでリポジトリのファイルを更新する(失敗の原因を知りたい)

先週は、P2HACKS2023協賛のため函館出張していました。学生の皆さんが「これ、もうサービスとして成立するでしょ👀」というハイレベルな成果物を次々に繰り出してくださったので、かなり良い刺激をいただきました。がんばろう。さて今日は、棚上げしていた、「関数でリポジトリのファイル情報を取得できなかった件」を調べたいと思います。


取得したはずのファイル情報がなぜ受け取れないのか?

前回、期待通りの処理ができるように修正したので、もとに戻して原因を調べたいと思います。

エラーを再現してみる

というわけで、ファイル情報を関数の戻り値として受け取ったあとに、リポジトリの対象ファイルのshaが取得できない状態を再現しました。

Cannot read properties of undefined (reading 'sha') status=undefined

どこに問題があるのか見当をつけたい

関数の戻り値は、リポジトリのファイル情報を持っていないので、shaがプロパティとして取得できなかったというエラーです。
VSCodeで対象の関数のパラメータを見てみると、octokitはanyなんですね。

でも、関数内でリポジトリのファイル情報は取得できている(shaは取得できている)ので、これは関係なさそうです。戻ってきた値がoctokit.repos.getContent()で取得した結果ではないというところが問題なわけです。関数内のオブジェクトを返却しても、呼び出し側にはオブジェクトが渡せていないということです。これ、何か方法がないのかな。
関数のパラメータとして渡して、パラメータに値を返却することができそうな気がします。

続きは、冬休みの課題に

と、ここまで考えたところで、今日は時間切れです。続きは、年末年始の宿題にしたいと思います。そもそもJavaScriptぜんぜんわかってないところが問題という話もあるので、そこからかも。

この記事が気に入ったらサポートをしてみませんか?