【问题标题】:How can I deploy static web app on Heroku如何在 Heroku 上部署静态 Web 应用程序
【发布时间】:2019-03-07 03:11:24
【问题描述】:

我按照类似主题的答案(https://stackoverflow.com/a/17531897/4388482)的说明进行操作。好吧,我的应用程序正在 Heroku 上部署,但效果不佳。我收到以下警告

您的项目仅包含“index.php”,没有“composer.json”。 使用 'index.php' 将应用程序类型声明为 PHP 已被弃用,并可能导致意外行为。

我可能需要安装一些东西吗?


更新

项目结构最初是这样的:

我做了以下事情:

  • 已安装 PHP 5composer
  • 我将 package.json 重命名为 composer.json 并删除了 package-lock.json
  • 键入“作曲家更新”命令。我收到“无需安装或更新”消息。
  • 将供应商添加到 gitignore。将更改推送到 heroku。

我收到以下警告

  1. 您的“composer.lock”已过期!

  2. 在项目中找到 Composer 供应商目录!

【问题讨论】:

  • 如果您还没有在 Inernet 上搜索过错误,请查看(第 1 个)stackoverflow.com/q/44683097/1415724 和第 2 个搜索结果找到 devcenter.heroku.com/articles/deploying-php - 有更多的命中,所以你可能想从那里继续。
  • 我做了一些研究。最初我既没有安装 php 也没有安装 composer。我按照heroku的说明安装了它们,但网站仍然不能正常工作。我有 php 5,但这应该不是问题。
  • 你能详细说明“效果不好”吗?
  • UI 与本地不同。向下滚动页面不起作用
  • package.jsonpackage-lock.json 可能是 JavaScript 依赖项。将它们重命名为原来的样子,并且不要删除锁定文件。您始终需要锁定文件来进行可重复部署。 vendor 文件夹中的文件是否已提交给 repo?我怀疑你需要解决这个问题 - 从 repo 中删除它们并添加一个 composer.json 文件(和锁定文件)以使用 Composer 安装它们。

标签: php heroku


【解决方案1】:

Heroku 的投诉是regarding this folder

作为记录,该文件夹目前的内容是:

bootstrap
fontawesome-free
jquery-easing
jquery

这里发生的情况是有人向您的版本控制提交了依赖项,这不是一个好的做法。它将按原样工作,但升级并不容易,尤其是因为您无法轻松查看当前拥有的版本。

有三种方法可以解决这个问题。

  1. 通过搜索 Packagist 确定这些是否是 PHP 依赖项。 Bootstrap 有一个 Composer 依赖项,但您需要查看您正在使用的版本是否可用(或者您是否可以升级到可用的版本)。

  2. 通过搜索 NPM 确定这些是否是 JavaScript 依赖项。我想知道是否值得检查您的 package.json 的内容,以防这些内容已经涵盖。对于它的价值,我通常会考虑将这些候选者用于 JavaScript 库而不是 PHP,但做适合你的。

  3. 选择将这些依赖项保留在现有的 vendor 文件夹中。它会起作用,但由于已经说明的原因,它并不理想。

在最后两种情况下,您可能会得到一个 composer.json 文件,因此您应该将其提交到 repo:

{
  "require": {
  }
}

你可以在这之后尝试composer install,看看它是否会在一个空的依赖列表上生成一个.lock文件。如果这确实产生了,那么你也应该提交它。

【讨论】:

  • 选项 3 将是最好的,因为我不介意未来的升级。在这种情况下,我需要提交供应商文件夹吗?
  • 是的,如果您选择选项 3,则保留 vendor 文件夹原样,并尝试提交最小的 composer* 文件。
  • 当我输入“composer install”时,我会收到“无需安装或更新”和“正在生成自动加载文件”消息。然后,在 heroku 构建中,我收到“composer dir found”警告。
  • 您可能会在没有锁定文件的情况下逃脱(因为没有什么可锁定的)。我想知道是否有 Heroku 设置来关闭目录错误行为,因为对于 PHP 项目来说,拥有一个已提交的 vendor 文件夹本身并不是灾难性的。如果没有这样的选项,将vendor重命名为其他任何东西(例如myvendors)并修复项目中所有引用这个的东西。
  • 终于成功了!谢谢,你花了这么多时间帮助我。
猜你喜欢
  • 2020-07-09
  • 2018-05-13
  • 2018-08-21
  • 1970-01-01
  • 2023-03-27
  • 2012-06-29
  • 2017-05-26
  • 2020-07-03
  • 1970-01-01
相关资源
最近更新 更多