S3cmd отмечает CSS с неправильным типом MIME

Я запускаю автоматические сборки на CircleCI приложения для реагирования. И шаг включает в себя запуск npm run build и последующее копирование в корзину S3 для размещения сборок. Я вижу, что s3cmd копирует файлы *.css в мою корзину S3 с неправильным типом MIME (text/plain) и что при обслуживании это приводит к тому, что веб-приложение не работает.

Я запускаю s3cmd версии 2.0.2 как локально на моем Mac (homebrew), так и на CircleCI (работаю внутри контейнера nodejs, устанавливается с помощью установки pip, setuptools и установки s3cmd через sudo python setup.py install).

При локальном запуске на моем Mac я развертываю свое приложение следующим образом:

s3cmd put --recursive -P dist/* s3://$BUCKET

На CircleCI я запускаю ту же команду. Я также пробовал опцию --guess-mime-type, которая, похоже, не действует.

Я неправильно определяю тип MIME следующим образом:

$ s3cmd info s3://$BUCKET/$DEPLOY/static/css/main.a0a90112.css | grep MIME MIME type: text/plain

Когда я запускаю ту же команду после развертывания с моего локального компьютера, я получаю MIME-тип CSS.

Так что я делаю не так?

Последующие действия - я до сих пор не понимаю, почему s3cmd делает это, и это похоже на ошибочное поведение, но это можно исправить вручную, выполнив проверку с помощью s3cmd modify "s3://$BUCKET/$SUBDIR/static/css/*.css" --mime-type = "text/css"

FrobberOfBits 11.12.2018 15:38

Это похоже на давнюю ошибку s3cmd с угадыванием неправильного типа MIME с помощью python-magic: <github.com/s3tools/s3cmd/issues/198> <github.com/s3tools/s3cmd/issues/376> <github.com/s3tools/s3cmd/issues/643>. Помогает ли добавление --no-mime-magic?

gwern 15.11.2019 21:33
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
3
2
1 003
2

Ответы 2

У меня была эта проблема с s3cmd rsync (не s3cmd put, как в вопросе), установив файлы с расширением .css как тип mime-типа text/plain. Благодаря приведенному выше комментарию и связанным с ним проблемам это исправило:

s3cmd sync --no-mime-magic --guess-mime-type ...

С использованием

s3 put ...

Вы можете загрузить все свои файлы, кроме css, с помощью

--guess-mime-type --no-mime-magic --exclude "*.css"

И тогда вы загружаете только css с принудительным mime-типом

-m "text/css" --exclude "*" --include "*.css"

Другие вопросы по теме