【问题标题】:How to find and serve JavaScript files with Rails如何使用 Rails 查找和提供 JavaScript 文件
【发布时间】:2020-01-27 20:02:37
【问题描述】:

我正在尝试安装“wysiwyg-rails”和“toastr-rails”。

我还尝试安装“Summernote”等替代 gem 以避免该错误,但同样的错误发生“未找到模块”。 CSS 文件加载成功,但 JavaScript 文件未加载。

使用以下方法安装 Summernote gem:

application.js:

require("@rails/ujs").start()
require("turbolinks").start()
require("@rails/activestorage").start()
require("channels")
require("summernote/summernote-bs4.min")

应用程序.scss:

@import "bootstrap";
@import "summernote-bs4";

一切都已配置好,当我尝试加载 Chrome 控制台显示的页面时:

application.js:9 Uncaught Error: Cannot find module 'summernote/summernote-bs4.min'

Application.js line 9: `require("summernote/summernote-bs4.min")`

并且服务器终端显示消息:

Module not found: Error: Can't resolve 'summernote/summernote-bs4.min' in '/d/myproject/app/javascript/packs'

我使用的是 Ruby 2.7.0p0 和 Rails 6.0.2.1,我通过 yarn 安装了 jQuery 和 popper。

【问题讨论】:

  • 您的问题不清楚。您是在尝试修复错误还是尝试寻找替代宝石并需要建议?请改写您的问题以使其清楚。
  • 你说得对,不清楚。我重新表述了问题的一部分。现在我认为很明显我试图安装替代 gem 只是为了避免错误。宝石正在工作,但前提是我通过 CDN 添加 js 文件或将 js 文件复制到 javascript 文件夹。只使用 "require("summernote/summernote-bs4.min")" 它不起作用。

标签: ruby-on-rails ruby


【解决方案1】:

通常,gem 旨在与 Sprockets(资产管道)一起使用。支持 Webpacker 集成的 Gem 通常有一个匹配的 yarn/npm 包。

我什至还没有找到一种方法来使用 Webpacker 编译器自动识别的 JavaScript 资产制作 gem。您必须添加一个 JavaScript 包将所需的 JavaScript 复制到 JavaScripts 文件夹中。

使用 Webpacker 时,如果您需要资产,使用 npm/yarn 包而不是 Rails gem 更容易添加第三方代码。

【讨论】:

  • 我不知道。我想在添加 gem 行、css 行和 js 行 (require("summernote/summernote-bs4.min")) 后一切正常。现在我知道我必须添加一个 js 包或将需要的 js 复制到 javascripts 文件夹中。谢谢!!
  • 添加 gem 和 css 和 js 的过程需要适用于 Sprockets 的资产管道。如果你使用 webpacker,它不能开箱即用,因为 webpacker 在 gem 的 assets 文件夹中找不到 js。
猜你喜欢
  • 2022-01-16
  • 1970-01-01
  • 2018-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多