Firebase部署未更新JS文件

71
我部署了一个Firebase应用程序,并更改了项目中的JavaScript文件之一。 我从项目目录重新执行 firebase deploy ,但网站上的文件没有更新。 当我部署时,帐户管理显示更新发生,但文件保持不变。 我是否做错了什么? 如何解决/排除故障? 非常感谢您的帮助。
谢谢
16个回答

137
如果部署成功,那么很可能是缓存问题。可以尝试按下 cmd+shift+R (Windows 上为 ctrl+shift+R) 强制刷新缓存。也可以直接访问文件的 URL (https://<my-app>.web.app/app.js) 并进行强制刷新。使用 Chrome 时,可以在 Network 标签中选择“禁用缓存”选项,以便在打开 DevTools 时禁用缓存。

输入图像描述


1
@SA__,您有兴趣使用Firebase Hosting吗?如果是的话,我可以帮忙。 - David East
7
@DavidEast,虽然这对调试/开发很有帮助,但我的一些用户仍然看到旧版本。我该如何强制让他们的浏览器加载新版本?谢谢! - bernatfortet
4
@user3660665,你在寻求帮助方面做得很正确。4年后,当我犯同样的错误时,这帮了我很大的忙。因为如果没有你的问题,我就不会找到答案。所以谢谢你。此外,许多屈辱是一种谦卑 - 对灵魂有好处!让我们继续朝着完美而失败... - Titou
3
如果问题出在客户端上(不应该需要进行清理才能看到更改),这不是正确的答案。有人知道如何解决这个问题吗? - Gustavo Contreiras
1
如果你所说的客户端是指另一台电脑上的其他人,那么问题就出在你在“Cache-Control”头部中设置浏览器缓存的时间长度上。Firebase默认设置了5分钟的缓存,因此如果客户端不刷新页面,网站将在此时间段后更新。确保你没有设置过长的时间。如果这样做没有解决问题,那么你可能有其他问题,比如没有正确部署或者你的服务工作者配置不正确,正在强制缓存页面。 - David East
显示剩余7条评论

61

在部署之前,请确保您已经构建了任何新的更改。

例如,如果您有一个Angular 2应用程序并正在使用Angular CLI,则输入ng build然后输入firebase deploy

要清除缓存,请按Ctrl + F5或者最好使用开发者模式。在移动设备和桌面设备上都可以使用开发者模式进行强制重新加载。


1
对我来说,我遇到了同样的问题。使用了npm run-script build。 - ihavenokia
这总是让我困扰。谢谢。 - GrahamJRoy
兄弟,我快疯了。谢谢你提醒我。 - Chad Mx

23

如果你正在使用React或Vue,请不要忘记在运行命令 firebase deploy 之前运行构建命令,如 npm run build


firebase deploy 不是已经运行了 npm run build 吗? - Zorayr
1
好的,我们需要查一下才能弄清楚firebase deploy在底层做了什么。但就我所知,像主要问题所问的那样,仅运行该命令并不能显示我们的更改。 - lorem_impus
同样在Angular中(ng build)。 - arielhasidim
你救了我的一天。 - alex02rt

15

我曾遇到同样的问题,尝试了清除缓存和一切可能的方法,但仍然无法解决。后来我运行了

yarn build

然后我可以看到我最新的更改。


4
我的天啊,我在问我的部署到底出了什么问题。当然,它上传的是公共版本,而不是我的开发代码...谢谢你指引我正确方向。 - Maximiliano Poggio
@MaximilianoPoggio 没问题 - Mehrnoosh

4
为了不再忘记在部署前进行构建,我将以下内容添加到我的package.json文件中: "scripts": { "build": "node build/build.js && firebase deploy" } 这样我就无需记住它。在部署时尽可能自动化。

4

我也曾遇到过类似的问题。我在使用React.js构建一个Covid Tracker时,发现我的代码存在一个bug。修复后,我运行firebase deploy,但没有任何反应。

长话短说,你需要在部署之前先构建好项目。运行npm run build将创建一个新的优化版本的项目,然后再运行firebase deploy更新你的网站。


你在建造一个什么样的COVID项目?请详细说明一下 :) - martis martis

3
尝试在隐身窗口中使用相同的托管URL。当我在隐身窗口中访问时,由于我在同一个窗口中维护了本地主机和域URL,因此它对我有效。

你也可以尝试一下,这可能也是你的问题,谢谢。


2

刷新你的网页浏览器

在大多数Windows和Linux浏览器中: 按住Ctrl键并按下F5。

在苹果Safari浏览器中: 按住⇧ Shift键并单击重新加载工具栏按钮。

在Mac上的Chrome和Firefox浏览器中: 按住⌘ Cmd+⇧ Shift键同时按R。

希望这能够帮助到您

来源:https://en.wikipedia.org/wiki/Wikipedia:Bypass_your_cache


2

我遇到了一个类似的问题,我构建了项目,硬重置缓存,但仍然无法解决问题。后来我意识到前面有几层Cloudflare CDN,这些层会提供缓存数据。因此,在开发过程中如果你有任何CDN,请将其禁用。


1

嗯,我正在开发一个PWA。我遇到了与上述步骤无法解决的相同问题。所以我尝试了这种方法,发现它很有帮助。

尝试删除map.js文件,并两次运行npm run build。为什么要两次?因为第一次会产生错误,但它也会重新构建map.js文件,该文件实际上对应于.js文件的更改。最后,firebase deploy应该给你想要托管的工作站点。下面是我的项目文件的图像,其中包括要删除文件的位置。 File to be deleted


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