Discourseの最近のアップデートが plugin outlet を奇妙な形で壊した

過去1週間ほどのDiscourseの変更により、私のプラグインが壊れてしまいました。何が問題なのか、どうすれば修正できるのか分かりません。このプラグインは何年も問題なく動作していました。

このプラグインは様々なことを行いますが、ここで関連性が高そうなのは、ユーザープロフィールページにボタンを追加することです。

現在、どのユーザーのページにアクセスしても、ページの大半(追加しようとしているボタンを含む)が表示されません。

(プラグインの設定ボタンでプラグインを無効にすると、ページは正常に表示されます。)

ChromeのJavaScriptコンソールを開くと、このページをリロードするたびに以下の例外とスタックトレースが表示されます。

このエラーについてどう考えればよいのか分かりません。私のコードではなく、例外が発生している箇所からそれほど遠くない行にあるはずのtnot a functionになっているからです。非常に混乱しています。しかし、私はJSの専門家ではないので、何か見落としているのかもしれません。

Chromeデバッガーでステップ実行したところ、問題は私のプラグインのテンプレートを処理している最中のその行で発生していますが、実際に何が問題を引き起こしているのか、あるいは私が変更/更新する必要があるのか、それともDiscourse自体のバグなのか分かりません。

関係していると思われるプラグインのJSコードとHBSテンプレートは、私のuser-profile-primaryコネクタにあります。以下で見つけることができます。

確信はありませんが、これらの最近のDiscourseのコミットが関係している可能性があるように思えます。

何か提案があれば、大いに感謝します!

こんにちは、@LeoDavidson さん - この問題を提起していただきありがとうございます。これらのコミットに関連している可能性が非常に高いです。調査して、何が変更されたのかを突き止めようと思います。動作に変更を加えるつもりはありませんでした。

しかし、その間、このPRはプラグインコネクタをより一般的なディレクトリレイアウトに移動することで問題を修正するはずです。

「いいね!」 10

どうもありがとうございます!PRと迅速な対応に感謝します。適用したところ、すべて問題なく動作するようになりました!

「いいね!」 4

この動作変更の原因を調査しました。コネクタは次のように配置されていました。

assets/javascripts/discourse/templates/user/connectors/{outlet-name}/{unique-name}.js
assets/javascripts/discourse/templates/user/connectors/{outlet-name}/{unique-name}.hbs

パス内の余分な /user/ は、unColocateConnectors ロジックで検出されないことを意味します。

all-the-pluginsall-the-themes を検索しましたが、このディレクトリレイアウトの他の出現は見つかりませんでした。そのため、さらに問題の報告がない限り、現時点ではそのままにしておきます。

「いいね!」 4

このトピックは554日後に自動的にクローズされました。返信はもう許可されていません。