タグのCSVファイルアップロード成功後、コンソールに軽微なエラー

CSVファイルをタグ付きでアップロードすると、アップロード成功後にコンソールにエラーが表示されます。


調査結果です。

根本的な問題は、現在のロジックではモーダルが速すぎるタイミングで閉じられることです。

エラーは uppy-upload.js で発生します。
要素(uppy-upload)がすでに破棄されているため、プロパティの設定に失敗しました。

これはどのようにして起こるのでしょうか? this._uppyInstance?.cancelAll();

参考までに、_reset_allUploadsComplete から呼び出されます。

アップロードが成功した場合、関数の順序は次のようになります。
uploadDone_allUploadsComplete → [ _reset ]

uploadDone が呼び出されると、モーダルはすぐに閉じられます。
これは、uppy-upload 要素がフレームの最後に破棄されることを意味します。
https://github.com/discourse/discourse/blob/main/app/assets/javascripts/admin/addon/components/tags-uploader.js#L22-L26

this._uppyInstance?.cancelAll(); に戻ります。これにより、以下のイベントがトリガーされます。
run() のため、要素が破棄された 後に プロパティが設定されるため、失敗します。

これは軽微なリグレッションです。ここで導入されました:

uppy-upload.js

tags-upload.js

考えられる解決策:

  • モーダルを少し遅れて閉じる
  uploadDone() {
    this.refresh();
    this.dialog
      .alert(I18n.t("tagging.upload_successful"))
      .finally(() => this.closeModal());
  }
  • run() ループの外にチェックを移動する。
    this._uppyInstance.on("file-removed", (file, reason) => {
      // cancel-all イベントは特別に処理するため、
      // ここで何かを行う必要はありません。このイベントは、
      // アップロードハンドラによって処理されるファイルがある場合にも発生します。
      if (reason === "cancel-all") {
        return;
      }

      run(() => {

これより良い解決策があるかどうかはわかりません。そのため、ここに投稿します。
これは非ブロッキングの軽微な問題にしては多くのテキストですが、当初は明らかではありませんでした。 :smile:

「いいね!」 3