【问题标题】:Rails 7 - picking up assets automatically in dev doesn't workRails 7 - 在开发中自动拾取资产不起作用
【发布时间】:2022-08-10 17:05:14
【问题描述】:

由于某种未知原因,当我在浏览器中按 F5 时,Rails 7(开发环境)不会自动获取 application.js 中的更改。位置application.js 是默认位置。我正在使用几乎默认的设置。

当我运行服务器时,它会从某个缓存版本中获取 javascript。我需要明确地rails assets:recompile 使其工作。

Importmap 看起来很标准:

# Pin npm packages by running ./bin/importmap

pin \"application\", preload: true
...

布局文件似乎也很标准:

<!DOCTYPE html>
<html>
  <head>
    <title>Whatever</title>
    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">
    <link rel=\"icon\" href=\"<%= image_path(\'favicon.svg\') %>\">
    <%= csrf_meta_tags %>
    <%= csp_meta_tag %>

    <%= stylesheet_link_tag \"application\", \"data-turbo-track\": \"reload\" %>
    <%= javascript_importmap_tags %>
  </head>
...

我试图在我的development.rb 中设置config.importmap.sweep_cache = true(根据importmap docs),但似乎没有效果。

在这一点上,我非常绝望,无法理解为什么我需要在我的开发环境上rails assets:precompile

此外,我没有在 \"localhost\" 域上运行我的应用程序,它位于类似 dev.server-somewhere.com 的位置(因此可以从任何地方访问),并带有 SSH 重定向,类似于 ngrok。不确定这是否是问题的原因。

澄清一下:我正在寻找没有实时刷新功能,只需使用 F5 页面刷新的标准方法即可。

  • 您是使用严格的 importmaps 来处理 javascript 还是使用 jsbundling 或 webpack?
  • 仅导入映射

标签: ruby-on-rails ruby-on-rails-7


【解决方案1】:

我有同样的问题,只需使用:rails assets:clobber 清除所有预编译资产。之后,热重载将再次开始工作。

由于某些原因,即使在开发模式下,如果存在现有的预编译 JS 资产,rails 也会给予它们优先权。

【讨论】:

  • 如果我然后运行rails assets:precompile 然后重新启动我的服务器,这将有效。但这是一种非常痛苦的开发方式,例如刺激控制器。
【解决方案2】:

我今天遇到了这个问题,我用propshaft 替换了链轮。然后它起作用了!你可以看看upgrade guide

【讨论】:

    【解决方案3】:

    我今天面临同样的问题,只是恢复到Sprockets,安装 gem 后一切都开箱即用。看来Sprockets is now optional in Rails 7。不过,我不知道 Sprockets 是否可以与 Import Maps 结合使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-08
      • 1970-01-01
      • 2015-11-26
      • 2014-05-14
      相关资源
      最近更新 更多