【问题标题】:DEPRECATION WARNING: The asset "ckeditor.js" is not present in the asset pipeline.Falling back to an asset that may be in the public folder弃用警告:资产管道中不存在资产“ckeditor.js”。回退到可能位于公用文件夹中的资产
【发布时间】:2018-12-18 02:19:33
【问题描述】:

我最近更新到 Rails 5.2.2(从 4.2.3),现在我在使用 CKEditor gem 的页面日志中收到此警告。

弃用警告:资产管道中不存在资产“ckeditor.js”。回退到可能位于公用文件夹中的资产。 此行为已弃用并将被删除。 要绕过资产管道并保留此行为, 使用skip_pipeline: true 选项。

这是行:

<%= javascript_include_tag :ckeditor %>

我尝试添加skip_pipeline: true,但随后它开始请求“/javascripts/ckeditor.js”,导致 404 错误。

无论哪种方式,CKEditor 都可以正常工作,并且文本字段是富文本。我的application.js中有这条线

 //= require ckeditor/init

即使没有javascript_include_tag,它也可以工作。我感觉以前的开发人员认为 CKEditor 是一个大型库,并且只想将它包含在需要它的管理员的特定页面上。怎样才能做到这一点?

【问题讨论】:

    标签: ruby-on-rails ckeditor ruby-on-rails-5


    【解决方案1】:

    Rails 将为您的 JavaScript 资产文件夹中的每个文件提供一个 JavaScript 文件。例如,您应该有一个javascript_include_tag 用于:application,因为那里有那个“application.js”文件。您将 ckeditor 包含到您的 application.js 文件中,这就是 ckeditor 工作的原因。但是,您尝试为不存在的资产包含 JavaScript 文件,这意味着您的 javascripts 文件夹中没有“ckeditor.js”文件。

    此消息来自 Rails 试图查找 js 文件的资产名称,因为在 prod Rails 中为文件名添加了唯一的哈希以防止缓存。

    这可能一直是个问题,而您只是从未注意到 JavaScript 文件 404ing,现在 Rails 5.2 比 4.2 更关注这个问题。

    您应该删除javascript_include_tag 行。

    或者,您可以创建一个 ckeditor.js 文件,并将 //= require ckeditor/init 从 application.js 文件移动到 ckeditor.js。现在您可以只在需要它的页面上执行 javacript_include_tag。但要小心你的加载顺序。如果您的 application.js 文件中有任何依赖于 ckeditor 的 js,反之亦然,您需要确保在 html 中以正确的顺序包含文件(与 application.js 中发生要求的顺序相同) js,假设顺序很重要)。

    【讨论】:

      【解决方案2】:

      成功了

      <%= javascript_include_tag 'ckeditor/init' %>
      

      我还在应用程序清单中注释掉了这一行

      // only load on required pages // require ckeditor/init
      

      【讨论】:

      • 这不起作用。如果您使用编辑器加载页面,它可以工作,但是当您使用 Turbolinks 导航到带有编辑器的页面时,它无法将文本框变成 CKEditor。见stackoverflow.com/questions/53839203/…
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-11
      • 2017-12-27
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多