Не удалось загрузить вложение js

Та же проблема у нас. У нас есть JS-файлы, которые работают в нашем собственном программном обеспечении, и ничего, что могло бы когда-либо выполняться в браузере.

Нам удалось исправить проблему с загрузкой в Discourse, перенеся все загрузки в бакет S3 и установив параметр s3_use_cdn_url_for_all_uploads в значение true. Это фактически обходит контроллер коротких ссылок, который, похоже, является главным препятствием для JS-файлов.

Подробности (от моего ИИ, который провёл меня через этот процесс):

  1. Настройка совместимого с S3 хранилища (например, Cloudflare R2)

Discourse не может безопасно отдавать файлы .js с локального диска. Переместите их в бакет.

  • Бакет: Создайте приватный бакет (например, my-discourse-bucket).

  • Ключи API: Сгенерируйте ключ доступа и секретный ключ.

2. Настройка пользовательского домена CDN

В Cloudflare (или у вашего провайдера) подключите пользовательский домен к вашему бакету (например, cdn.example.com). Это гарантирует, что файлы будут отдаваться как статические ресурсы по прямым ссылкам, обходя «страж безопасности» Discourse.

3. Обновление настроек Discourse

В Администрирование → Настройки настройте детали вашего S3. Крайне важно включить следующие параметры, чтобы Discourse не пытался «подписывать» URL временными заголовками, которые могут нарушить работу:

  • s3_use_cdn_url_for_all_uploads: Отметьте этот флажок (это самый важный шаг).

  • s3_cdn_url: Установите значение https://cdn.example.com.

  • s3_region: Используйте us-east-1 (для совместимости с R2).

4. Миграция существующих загрузок (опционально)

Примечание: Это НЕ сработало у нас по неизвестным причинам.

Чтобы исправить старые ссылки в существующих сообщениях, войдите в контейнер и выполните:

Bash

# Внутри /var/discourse
./launcher enter app
rake uploads:migrate_to_s3
rake posts:rebake

Надеюсь, это кому-то поможет.