CSS 将 Apostrophe CSM 部署到 Heroku 时找不到 JS 资产
CSS and JS assets not being found when deploying Apostrophe CSM to Heroku
我正在关注部署到 Heroku 的 HOWTO:https://docs.apostrophecms.org/apostrophe/tutorials/howtos/deploying-apostrophe-in-the-cloud-with-heroku
由于我使用 Heroku 的 mLab 附加组件来处理我的 Mongo,因此我有点偏离 HOWTO。另外,我暂时跳过了 S3 设置,因为我只是想把事情搞定 运行。我不确定这对正确交付资产是否非常重要。
我已经完成了 HOWTO 中的以下内容:
- 在 Heroku 中创建了一个项目
- 将其添加到我的 git 存储库中作为
heroku
作为遥控器
- 添加了 mLab 附加组件并创建了一个数据库,并添加了指向该数据库 uri 的环境变量。
- 为
APOS_BUNDLE=1
和 APOS_MINIFY=1
添加了环境变量
- 在 /scripts 目录以及 Procfile 中添加了 heroku-release-scripts 可执行文件。
这是我的代码 ./scripts/heroku-release-scripts
#!/bin/bash
node app apostrophe:generation
node app apostrophe-migrations:migrate
这是 Procfile
web: node app
release: ./scripts/heroku-release-tasks
值得注意的一件事;如果我查看 CSS 和 JS 资产的路径,它会看到类似这样的内容
https://van-biema-partners.herokuapp.com/uploads/assets/ck0fmqn3i00050uuck7exy3v2/apos-minified/anon-ck0fmqn3i00050uuck7exy3v2.js
我不确定这是否正确,但也许是...
编辑
复制上面的URL并去掉'/uploads/assets/ck0fmqn3i00050uuck7exy3v2'部分,我可以看到CSS和JS。不确定路径是怎么回事,但这似乎是问题所在,但我不知道如何纠正它。
https://van-biema-partners.herokuapp.com/apos-minified/anon-ck0fmqn3i00050uuck7exy3v2.css
问题是新的、简化的 APOS_BUNDLE=1
功能严格要求您有一个持久的 uploadfs 后端——换句话说,它要求您设置 S3,甚至要成功使用资产 URL。
由于这在任何情况下都是媒体上传工作所必需的,因此我已修复您阅读的文档以解决此要求。我还删除了关于 --sync-to-uploadfs
选项的令人困惑的剩余部分,不再需要将资产复制到 S3;这部分导致了令人困惑的印象,即 S3 可能不是强制性的。
(严格来说不一定是Amazon S3。Apostrophe 的uploadfs 模块除了支持替代S3 实现外,还支持Azure blob 存储和Google 的云存储。uploadfs 文档有更多关于那个主题。真正需要的是 heroku 临时文件系统以外的其他地方来存储东西,因为这些东西不是持久的,也不是所有 dynos 都可以看到相同的文件。)
我正在关注部署到 Heroku 的 HOWTO:https://docs.apostrophecms.org/apostrophe/tutorials/howtos/deploying-apostrophe-in-the-cloud-with-heroku
由于我使用 Heroku 的 mLab 附加组件来处理我的 Mongo,因此我有点偏离 HOWTO。另外,我暂时跳过了 S3 设置,因为我只是想把事情搞定 运行。我不确定这对正确交付资产是否非常重要。
我已经完成了 HOWTO 中的以下内容:
- 在 Heroku 中创建了一个项目
- 将其添加到我的 git 存储库中作为
heroku
作为遥控器 - 添加了 mLab 附加组件并创建了一个数据库,并添加了指向该数据库 uri 的环境变量。
- 为
APOS_BUNDLE=1
和APOS_MINIFY=1
添加了环境变量
- 在 /scripts 目录以及 Procfile 中添加了 heroku-release-scripts 可执行文件。
这是我的代码 ./scripts/heroku-release-scripts
#!/bin/bash
node app apostrophe:generation
node app apostrophe-migrations:migrate
这是 Procfile
web: node app
release: ./scripts/heroku-release-tasks
值得注意的一件事;如果我查看 CSS 和 JS 资产的路径,它会看到类似这样的内容
https://van-biema-partners.herokuapp.com/uploads/assets/ck0fmqn3i00050uuck7exy3v2/apos-minified/anon-ck0fmqn3i00050uuck7exy3v2.js
我不确定这是否正确,但也许是...
编辑
复制上面的URL并去掉'/uploads/assets/ck0fmqn3i00050uuck7exy3v2'部分,我可以看到CSS和JS。不确定路径是怎么回事,但这似乎是问题所在,但我不知道如何纠正它。 https://van-biema-partners.herokuapp.com/apos-minified/anon-ck0fmqn3i00050uuck7exy3v2.css
问题是新的、简化的 APOS_BUNDLE=1
功能严格要求您有一个持久的 uploadfs 后端——换句话说,它要求您设置 S3,甚至要成功使用资产 URL。
由于这在任何情况下都是媒体上传工作所必需的,因此我已修复您阅读的文档以解决此要求。我还删除了关于 --sync-to-uploadfs
选项的令人困惑的剩余部分,不再需要将资产复制到 S3;这部分导致了令人困惑的印象,即 S3 可能不是强制性的。
(严格来说不一定是Amazon S3。Apostrophe 的uploadfs 模块除了支持替代S3 实现外,还支持Azure blob 存储和Google 的云存储。uploadfs 文档有更多关于那个主题。真正需要的是 heroku 临时文件系统以外的其他地方来存储东西,因为这些东西不是持久的,也不是所有 dynos 都可以看到相同的文件。)