Heroku没有更新我的代码?

20

所以我在本地进行了一些CSS更改,运行了 git add ., git commit -am "Hello", git push heroku master,但由于某种原因,两个提交之前,更新停止了。

它可以成功提交,并且没有显示任何异常信息。

我尝试创建一个新分支并将其推送到 heroku 分支,但仍然没有效果。出了什么问题?


1
git status 显示了什么?此外,它是否正确地推送到 GitHub(或其他远程端点)?当我进行存储和还原到早期版本时,有时会偏离轨道。 - prototype
1
我在想CSS是否真的在Heroku上更新了,但也许是浏览器缓存了CSS。可以尝试从另一台机器或浏览器中查看?它是否在GitHub上?作为一个检查,实际上去GitHub.com仓库看看CSS的更改是否存在。我不知道是否可以在Heroku的git仓库中查看源代码。 - prototype
1
你运行了Heroku命令collect static吗?在第一次推送后,静态文件需要手动收集以更新之前的版本。 - agconti
@agconti Ruby on Rails - Louis93
2
嘿,你找到解决方案了吗? - aliasav
显示剩余10条评论
12个回答

25

确保你的本地分支是主分支(master)。如果你使用了其他本地分支,那么你必须使用它。

git push heroku your_local_branch_name:master

1
这个 ^^ . Heroku 只部署你推送到远程主分支或主要分支的代码。将代码推送到 Heroku 远程的另一个分支没有任何效果参考 - user11543803

21

请在命令行上尝试运行“heroku releases”和“heroku ps”。

heroku releases应该会显示Heroku当前正在运行的git版本 -- 这将让您比较本地git修订版与Heroku的版本,以确保它实际上已经 收到了您的更新。

接下来,您可能需要检查heroku ps,并验证您的应用程序是否按预期运行。

最后,如果所有其他方法都失败了,请尝试运行heroku run bash,并查看Heroku在您的Dyno上的文件,如果不匹配,请发送电子邮件给Heroku支持!


2
嘿,我检查了 heroku run bash,令我惊讶的是那里的CSS已经更新,但网站仍然提供过时的CSS文件! - Louis93
太令人沮丧了,谢谢,我会给Heroku支持发送电子邮件。 - Louis93
如果你正在使用Express运行Angular应用程序,你一定要检查ng build --prod,并确保最终的JS文件在服务器上。我的意思是,将编译后的最终结果添加到git中是导致我的应用程序没有更新的原因。 - JBarros35
1
提醒一下,如果你和我一样使用 djangoreact,在 git 推送到 heroku 上游之前,你还需要提交构建文件 :) - Ayush
@Ayush,这对我解决了问题,谢谢! - Undefined

10
如果您的域名使用 Cloudflare DNS,请尝试从 Cloudflare 帐户中“清除缓存”。

8

如果你的代码已经正确地发布到heroku releases,并且你想要清除缓存并强制重新编译,请参考https://help.heroku.com/18PI5RSY/how-do-i-clear-the-build-cache

$ heroku plugins:install heroku-repo
$ heroku repo:purge_cache -a appname

缓存将在下一次部署时被重建。

$ git commit --allow-empty -m "Purge cache"
$ git push heroku master

2

我也遇到了这个问题。在 Github 存储库中进行的 CSS 更改未在 Heroku 应用程序中反映出来。使用硬重载解决了这个问题。

使用 Ctrl + F5 进行硬重载。硬重载可以绕过缓存。您还可以通过打开浏览器中的开发人员工具(F12)并右键单击刷新按钮来进行硬重载。


什么是硬刷新? - ShridharK
我同意这个评论,呵呵。这值得点赞。 - Two

2
我最近也遇到了这个问题。如果您已经尝试了主要的故障排除步骤,那么可能与Brett84c所说的类似 - 构建过程没有被正确地执行。
例如,这个网站建议您在后端express应用程序的index.js文件中插入以下代码块,以便从预构建文件夹中提供静态文件。
// ... other app.use middleware 
app.use(express.static(path.join(__dirname, "client", "build")))

// ...
// Right before your app.listen(), add this:
app.get("*", (req, res) => {
    res.sendFile(path.join(__dirname, "client", "build", "index.html"));
});

然而,这意味着您必须确保每次对“客户端”前端React应用程序进行更改时,位于后端文件夹中的构建文件夹已实际更新(重建),以便它提供服务。请注意保留HTML标签。

1

尝试运行:

bundle exec rake assets:precompile

然后得到:
git add . 
git commit -m "asdfasdf" 
git push heroku master

0
今天早上我遇到了这个问题,但是我无法解决它。我查看了实例上的文件,它们是正确的,但网站仍然提供旧版本。
我的解决方案是删除实例并重新开始。新实例对git push做出了适当的响应,这让我认为Heroku基础设施中可能存在更深层次的问题。

0
  1. 删除 bundle.js 文件
  2. 运行 node build.js 命令
  3. 提交并 git push origin master
  4. git push heroku master

0
在我的情况下,我忘记在提交之前执行 mvn clean install

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接