misskey icon indicating copy to clipboard operation
misskey copied to clipboard

ReferenceError: LANGS is not defined

Open saschanaz opened this issue 2 years ago • 3 comments

💡 Summary

ローカルでテストする時よくみるエラー

https://github.com/misskey-dev/misskey/blob/4a989f7ebbd96ba4c90133935fd32af296474785/packages/backend/src/server/web/boot.js#L30-L33

実際LANGSはない

🥰 Expected Behavior

エラーが出ない

🤬 Actual Behavior

エラーがでる

📝 Steps to Reproduce

よくわかりません。コードみたら100%発生しそうにも見えますがそんなことはないのでちょっと謎です

📌 Environment

Misskey version: ac0e0122f64bef3addfc490ac951d2c53ec1f295 Your OS: Windows 11 Your browser: Firefox

saschanaz avatar Mar 19 '23 17:03 saschanaz

手動でOCIにインストールしたところproductionビルドにも関わらず同様のエラーが発生します ブラウザ上の表示は「Failed to load
読み込みに失敗しました」となっています

skyinthehand avatar Dec 10 '23 19:12 skyinthehand

最近 pnpm dev した際にこのエラー(もしくは、フリーズしてスピナーが永遠に回っている状態[^1])に時々遭遇するようになりました。

[^1]: この際ブラウザのコンソールには fatal: invalid regex: repetition-operator operand invalid と出ている

この変数 LANGS 自体は pnpm build-assets が走ると自動で置換されるようになっています。

https://github.com/misskey-dev/misskey/blob/b8800b8b95712ed25266ba294850963b4643f04f/scripts/build-assets.mjs#L52

pnpm dev した際に実行される scripts/dev.mjs にも当該処理は存在しますが、その後に実行される pnpm --filter backend dev によって packages/backend/built/server/web/boot.js が上書きされる(すなわち LANGS が残った状態になる)ためこの処理は意味を成しません。pnpm build-assets --watch がその後に運良く走った場合は LANGS が再置換されるのでエラーが生じませんが、そうではなかった場合には LANGS が置換されない(もしくは置換されていても中途半端に中身が汚れることがある?)のでエラーが生じてしまいます。

私のローカルでは pnpm build-assets --watchsetTimeout で数秒遅らせる(もしくは手動で pnpm build-assets を走らせる)ことで一応解決しています。

一度うまく行けばキャッシュが効く?のでその後も問題なく動くのですが、例えばバックエンドで何らかの編集をしてしまうと nodemon によってビルドが走り boot.js が確実に汚れるので、その後にキャッシュを削除したりプライベートブラウジングなどで開いたりすると見事にこのエラーに遭遇してしまいます。その際には手動で pnpm build-assets を走らせる必要があります。

LANGS を置換するのではない別の方法を考えたほうが良さそうな気はします。

zyoshoka avatar Feb 14 '24 14:02 zyoshoka

↑ #12861 で言及されていたようです(重複失礼しました)

zyoshoka avatar Feb 14 '24 14:02 zyoshoka

Fixed by #13659

zyoshoka avatar Jun 12 '24 07:06 zyoshoka