【问题标题】:Where to find the JS to require from Gems in Rails 6 webpacker在哪里可以从 Rails 6 webpacker 中的 Gems 中找到需要的 JS
【发布时间】:2020-10-06 23:12:46
【问题描述】:

每次我需要在我的 Rails 6 应用程序 (webpacker) 上安装 gem 时,我都无法像以前在以前的 Rails 版本中那样从 gem 中找到需要 JS 的位置。

这是以前的样子 app/assets/javascripts/application.js

//= require gem_name

但是现在,app/assets/javascripts 已经从资产中消失了

我认为我必须要求它 app/javascript/packs/application.js 像这样

require("gem_name").start

但是当我这样做时,即使我有我的 Gemfile

gem 'gem_name'

并捆绑安装它

它引发了一个未捕获的 JS 错误:

Uncaught Error: Cannot find module 'gem_name'

我应该如何以及在哪里需要 gems JS?我真的不清楚 谢谢

【问题讨论】:

  • 为什么需要为JS安装gem?
  • 你应该使用合适的 npm 包而不是 gem。只需通过 yarn 安装它,检查您的 package,json 并要求您的 app/javascript/packs/application.js 。此外,您可以详细解释您的问题:您尝试使用什么宝石?

标签: ruby-on-rails ruby rubygems ruby-on-rails-6 webpacker


【解决方案1】:

至于webpacker,我们需要将js文件与gem分开添加,这看起来像是一种回归,就像我们从gem文件夹中添加的sprockets一样。 Webpack 为我们带来了很多很棒的功能,也带来了一些令人头疼的问题。 而且由于webpacker是一个相对较新的框架,很多gem还没有切换到新的格式。

如果 gem 添加了对 webpack 的支持 将他们的 js 打包到 es6 模块中(简单的方法) 我们只是用 Yarn 安装 js,并像你上面提到的那样需要它。

让我们看一个基于i18n-js gem 的示例。 在以前的版本(链轮)中,我们需要:

1 # add gem to the gemfile
=> gem "i18n-js"
2 # run gem install
=> gem install "i18n-js"
3 # require gem js inside aplication.js
=> //= require i18n.js

使用webpacker,相同的过程将如下所示:

1 # install the js with Yarn # 
=> yarn add i18n-js

三个 cmets,首先,您可能会看到 i18n-js 完全是 js gem,因此无需将其添加到 gemfile(rails ujs 是以前在 gemfile 中的附加完全 js 文件),其次,gems 可能包含 js、CSS 和 ruby​​,webpacker 我们主要摆脱 js gems 类型,并且取决于您如何处理 CSS,我们可能会摆脱 CSS 类型 gems(例如 bootstrap gem是 js 和 CSS gem) 反直觉的,但我们可以使用 Yarn 处理和安装包含 js 和 CSS 文件的模块\包,webpack 两者都适用。 尽管按照惯例,它仍然建议对 CSS 使用 sprockets,所以我们只是在需要时将 routs 设置为 node_modules。 在最后第三点,查看纱线yarnpkg.com/package 以查看gem 是否有我们可以添加的包总是很好的做法。

2 # added installed package to the pack\page you need the package
  import I18n from "i18n-js"
3 # now you can set the language for the package
  I18n.defaultLocal = 'he' 

好的,但是如果 gem 没有 module\packege 怎么办? 这里只是有点复杂,视情况而定,有时您可以从 gem 中获取代码并通过 import 将其添加到您的 javascript 文件夹中,或者如果代码没有模块,您可以使用 exports-loader 包来打包旧的 js 代码到模块。

【讨论】:

  • 感谢您的回答!我现在很清楚它是如何工作的
【解决方案2】:

如果您想要一个 hacky 答案,我们需要知道您要安装哪个 gem。

但是,特别是如果这是一个新的 rails-6 项目,您最好花一些时间学习 Rails 6 如何使用 webpacker。一旦你掌握了窍门,你就可以访问任何 js 包。

我发现https://hackernoon.com/integrate-bootstrap-4-and-font-awesome-5-in-rails-6-u87u32zd 是一个很好的起点。

但同样,如果您告诉我们您尝试安装哪个 JS 包(或它的哪个 gem 包装器),我们可以更具体地回答。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-01
    • 2023-04-07
    • 2019-10-01
    • 1970-01-01
    • 2020-01-31
    • 2020-10-16
    • 2021-09-03
    • 1970-01-01
    相关资源
    最近更新 更多