【发布时间】: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