【问题标题】:s3cmd flagging CSS with wrong MIME types3cmd 用错误的 MIME 类型标记 CSS
【发布时间】:2018-12-10 15:38:58
【问题描述】:

我在一个 React 应用的 CircleCI 上运行自动化构建。一个步骤涉及运行npm run build,然后复制到 S3 存储桶以托管构建。我看到的是 s3cmd 正在使用错误的 MIME 类型 (text/plain) 将 *.css 文件复制到我的 S3 存储桶,并且在提供时这会导致 Web 应用程序无法运行。

我在我的 mac(自制软件)和 CircleCI 上本地运行 s3cmd 版本 2.0.2(在 nodejs 容器内运行,通过安装 pip、setuptools 安装,并通过 sudo python setup.py install 安装 s3cmd)。

在我的 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

当我从本地机器部署后运行相同的命令时,我得到一个 CSS MIME 类型。

那我做错了什么?

【问题讨论】:

  • 跟进 -- 我仍然不知道为什么 s3cmd 会这样做,这似乎是错误的行为,但可以通过跟进 s3cmd modify "s3://$BUCKET/$SUBDIR/static/css/*.css" --mime-type="text/css" 手动修复
  • 这听起来像是长期存在的 s3cmd 错误,通过 python-magic 猜测错误的 MIME 类型:github.com/s3tools/s3cmd/issues/198> github.com/s3tools/s3cmd/issues/376> github.com/s3tools/s3cmd/issues/643>。添加--no-mime-magic 有帮助吗?

标签: reactjs amazon-s3 circleci s3cmd


【解决方案1】:

我在s3cmd rsync(不是问题中的s3cmd put)将扩展名为.css 的文件设置为mime 类型text/plain 时遇到了这个问题。感谢上面的评论和它的链接问题,这解决了它:

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

【讨论】:

    【解决方案2】:

    使用

    s3 put ...
    

    您可以使用

    上传除css以外的所有文件
    --guess-mime-type --no-mime-magic --exclude "*.css"
    

    然后你只上传具有强制 mime 类型的 css

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

    【讨论】:

      猜你喜欢
      • 2015-09-21
      • 1970-01-01
      • 2018-10-15
      • 1970-01-01
      • 2021-11-25
      • 2020-11-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多