【问题标题】:Rails: Sprockets::Rails::Helper::AssetNotPrecompiled in developmentRails: Sprockets::Rails::Helper::AssetNotPrecompiled 在开发中
【发布时间】:2016-06-11 12:37:31
【问题描述】:

我对 Rails 比较陌生,我正在尝试在开发环境中使用资产管道 SCSS。但是,在我创建了控制器、视图和css.scss 文件后,我遇到了以下错误:

Sprockets::Rails::Helper::AssetNotPrecompiled

这是错误信息:

资产未声明为在生产中预编译。添加 Rails.application.config.assets.precompile += %w( public.css ) 到 config/initializers/assets.rb 并重启你的服务器

我读到,在开发中,资产会即时编译,无需预编译。为什么会出现预编译错误? Rails 是否认为我在生产而不是开发?

2016 年 3 月 1 日编辑 ------

我刚刚意识到将文件添加到 config/initializers/assets.rb 是可行的。但这是正确的方法吗?我必须在 assets.rb 中手动添加所有 css/js/jpg 文件才能正常工作。我觉得这在某种程度上违反了 DRY 原则。

【问题讨论】:

    标签: css ruby-on-rails sass


    【解决方案1】:

    这些都不适合我(rails-5.0.7、sprockets-3.7.2、sprockets-rails-3.2.1):

    config.assets.debug = false
    config.assets.unknown_asset_fallback = true
    

    但这确实:

    config.assets.check_precompiled_asset = false
    

    【讨论】:

    • 从字面上看,config.assets.check_precompiled_asset 也为我工作。轨道版本 4.2.8
    • 非常感谢,这在 Rails 6.0.2.1 中也适用于我
    • 这有助于解决仅 api 应用程序在 Apitome 文档解析中的问题。
    • 当 Sprockets 无法确定 myfile.js.erb 是一个东西时,这在 rails 6.0.3.3 中对我有用
    • 为我工作,但为什么呢?应用程序突然开始为图像抛出这些错误。在 development.rb 中处理它让它再次工作。
    【解决方案2】:

    我有同样的问题,并通过删除 tmp 文件夹中的所有缓存文件来解决它

    rm -rf tmp/cache/assets
    

    【讨论】:

    • 这对我有用,谢谢! (导轨 5.2.2 / sprockets 4.0.2 / sprockets-rails 3.2.2)
    • 谢谢!这是实际的解决方案。rm -rf tmp/cache/assets/
    • 谢谢!帮我修好了!
    • 希望我能再次投票,因为这又为我解决了问题。
    【解决方案3】:
    //= link_directory ../javascripts .js
    

    添加到
    应用程序/资产/配置/manifest.js
    为我工作(在 Rails 6 上工作)

    【讨论】:

    • 我必须添加这两行才能使用 Rails 6 //= link administrate/application.css //= link administrate/application.js 工作。
    • 用rails为我工作6.1.3
    【解决方案4】:

    对于那些从 rails 4 升级到 5-6 后来到这里的人 - 结帐 manifest.js

    app/assets/config/manifest.js
    

    如果没有js的链接——就加一个:

    //= link_directory ../javascripts .js
    

    【讨论】:

      【解决方案5】:

      在 Rails v5.1.5 中更改 assets.debug 对我不起作用。我不得不使用这个选项: config.assets.unknown_asset_fallback = true

      【讨论】:

        【解决方案6】:

        请检查文件

        config/environments/development.rb
        

        config.assets.debug = true(如果 TRUE 变为 FALSE)

        【讨论】:

        • config.assets.debug 设置为 True。
        • 尝试将其更改为 FALSE
        • 成功了。谢谢。所以调试模式不会预处理资产,这就是为什么我需要将其设置为关闭?所以 scss 文件需要预处理才能工作?
        • 欢迎您!是的!因为在开发环境中调试需要时间。但在生产模式下,它设置为 true,因为您需要预编译所有资产以更快地呈现和解释。
        • 这对我不起作用我仍然收到错误,我将其从 true 更改为 false
        【解决方案7】:

        你可以用下面这行代码初始化这个scss文件

        Rails.application.config.assets.precompile += %w( applicationname.css )
        

        【讨论】:

        • 上面需要修改的文件:config/initializers/assets.rb
        【解决方案8】:

        //= 链接目录 ../javascripts .js

        将此添加到 app/assets/config/manifest.js

        【讨论】:

        • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。
        【解决方案9】:

        我需要在清单中声明我的资产:

        //= link_directory ../stylesheets .css
        

        在app/assets/config/manifest.js

        【讨论】:

          猜你喜欢
          • 2021-01-12
          • 2021-06-17
          • 1970-01-01
          • 2021-05-13
          • 2019-04-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-05-23
          相关资源
          最近更新 更多