【问题标题】:Express static file is not updatingExpress 静态文件未更新
【发布时间】:2020-12-18 16:31:50
【问题描述】:

我正在使用 express 运行本地服务器。服务器能够显示我计算机上的一些本地文件。其中有一个名为“lastResult.txt”的文件,每次我运行 bash 脚本时都会更新。

由于某种原因,当我运行服务器并尝试显示文件时,它显示的是一周前的版本。比一周前,该文件文件最近在本地更新。即使在重新启动服务器后甚至在不同的浏览器上,这种情况仍然存在。

我正在使用 serve-index 模块来显示目录。

【问题讨论】:

  • 如果重新启动服务器时文件没有更改,则浏览器正在缓存文件本身,或者您不能显示和更新同一个文件。服务器重新启动后,服务器端缓存不太可能存在。您可以在 Chrome 调试器的网络选项卡中查看浏览器是从自己的缓存加载该文件还是从服务器获取该文件。可能是浏览器缓存,或者您没有在服务器上更新和显示相同的文件。

标签: html node.js express


【解决方案1】:

您没有说如何提供静态文件 - 使用 express.static 或使用一些自定义处理程序。 express.static 不会缓存文件,但您的自定义处理程序可能会。在任何情况下,这些文件都可以缓存在客户端,具体取决于 ETag 和 Max-Age 的值,但即便如此,它们也不应该在使用其他浏览器访问后保留。

根据您的描述,您似乎没有更新正确的文件或在正确的目录中。当然不可能确定,因为您甚至没有包含一行代码,所以只能推测,但似乎确实如此。

【讨论】:

  • 是的,这成功了。它正在从自定义位置检索文件,但我没有抓住它,因为目录中的所有其他文件都已正确检索。谢谢!
【解决方案2】:

这个问题已经回答了。
我正在添加它以防有人需要这样的问题示例(这是不明显的)。

在使用 EJS 和 express 时遇到了类似的问题。

  • 我正在导入标头。
  • 标头加载了 CSS。
  • 在两个不同的文件夹中有一个名为 base.css 的 CSS 文件(相同的 CSS 文件名两个不同的文件夹 projectroot/pages/base.css && projectroot/views/base.css)
  • header.ejs 文件所在的文件夹是 projectroot/views/(这是我想要的 base.css)
  • 从路径角度来看,有意加载其他 css 文件应该有:../pages/base.css
  • 为了完全明确,我应该像这样引用本地目录中的 CSS 文件:./base.css 但我引用它就像 base.css
  • 令人惊讶的是...正在加载的 CSS 文件是 projectroot/pages/ 目录中的文件,而不是 projectroot/views/ 目录中的文件
  • 更改对./base.css 的引用解决了问题

【讨论】:

    猜你喜欢
    • 2013-07-20
    • 2019-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-18
    • 2021-04-21
    • 2020-12-11
    • 2017-05-03
    相关资源
    最近更新 更多