DiscoTOCでTypeErrorが表示されています

わかりました。エラーを解消し、再現させることができました。

TL;DR

  • 以前正常に動作していたS3設定に戻し、DiscoTOCコンポーネントを削除して再インストールすると、コンポーネントのインストール時にエラーのない状態になります。
  • app.ymlのすべてのS3ディレクティブをコメントアウトしてS3を無効にすると、コンポーネントをインストールしたときにエラーが再度現れ、アップデート時にもエラーが戻ると推測されます。
  • DISCOURSE_USE_S3: falseを設定しても、DiscourseはS3パスの使用を止めません。これはバグか、この設定が期待通りの動作をしない可能性があります。

詳細な概要

最初に私が行ったのは、MinIOの設定を復活させ、app.ymlの設定オプションのコメントを解除し、アプリを再構築し、s3:upload_assetsタスクを実行したことです。サイトが復旧したら、コンポーネントセクションに移動しました。既にインストールされていたDiscoTOCコンポーネントにはエラーが表示されていましたが、それを削除して再インストールするとエラーは再現しませんでした。DiscoTOCコンポーネントのインストール中に_sprite.svg_が私のS3サーバーからリクエストされました。

問題の再現を試みる一環で、面白い問題に直面しました。すべてのS3ディレクティブを有効(コメントアウトしない)にした状態で、DISCOURSE_USE_S3: falseに設定すると、MinIOが稼働していないときにサイトのフロントエンドがロードされなくなるのです。

おそらく、DISCOURSE_USE_S3: FalseはすべてのS3アクセスを無効にするものではなく、その名前に基づいてそう推測していますが、実際にはそうではありません。MinIOサービスを再起動し、フロントエンドをリフレッシュするとすべて動作します。また、この状態でDiscoTOCコンポーネントをアンインストールし、再インストールしてもエラーは再現されません。少なくともこれはバグの可能性があります。

以下は、再現性のあるエラーにつながった3番目の状態です。

MinIOを稼働させずにサイトを動かすために、すべてのS3関係の設定をコメントアウトし、アプリを再構築しました。その後、MinIOを稼働させずにフロントエンドが問題なくロードされました。しかし、DiscoTOCコンポーネントをアンインストールして再インストールするとエラーが再び現れます。MinIOを起動しても同様です。おそらく、app.ymlにS3の設定がまったく存在しなかったため、裏でS3にアクセスしようとしてもデフォルト値を使っているだけだったからです。ただし、投稿の再ベーク後もいくつかの画像はS3から配信され続けているようです(例:1531a70abda0d81d1a4039b6f3fa38bea79ef0de_2_180x180.png/xl.meta)。

「いいね!」 2