Rails 6 Webpacker Uncaught TypeError: $ (...). Slick не является функцией - PullRequest
0 голосов
/ 07 января 2020

Я довольно новичок в Rails 6 и Webpacker. Сценарий состоит в том, что я добавил пакет через пряжу с именем 'slick-carousel'. И я использую

require('slick-carousel')

, чтобы потребовать пакет. И у меня есть пользовательский файл js 'custom-slick.js', который использует функцию из файла slick.js в пакете slick-carousel. И я попробовал перестановку и комбинацию обоих ниже -

import './slick-custom.js'

и

require('./slick.js');

Кажется, ничего не работает и говорит Uncaught TypeError: $(...).slick is not a function. Полагаю, и я уверен, что 'custom-slick.js' определяется до инициализации slick.js. Я также пытался сначала запросить только пакет и добавить нижеприведенный тег перед тегом конца тела. а также импортировать пакет в пользовательский файл. Но, похоже, не работает.

<%= javascript_pack_tag 'slick-custom' %>

Я нашел два способа заставить его работать.

  1. Вставьте библиотеку slick.js в apps/javascripts/packs, добавьте custom-slick.js работает с slick.js и добавляется ниже перед тегом body в html .erb <%= javascript_pack_tag 'slick' %>
  2. Требуется библиотека как обычно. Поместите custom-slick.js в app/assets/javascripts, добавьте его в конвейер ресурсов рельсов, например Rails.application.config.assets.precompile += %w[slick-custom.js], а затем <%= javascript_include_tag 'slick-custom' %>

Они оба работают, но немного грязно. Есть ли лучший способ и rails-webpacker-y добиться этого?

...