javascript - Rails 6 Webpacker : Attempting to install jQuery and JS library

标签 javascript jquery ruby-on-rails webpack webpacker

Rails 6、Webpacker 和 Flickity

快速演示应用程序:https://github.com/ratahtatah/flickedyflack

尝试 1:纯 jQuery
TypeError: $(...).flickity is not a function

应用程序/javascript/packs/application.js

require("@rails/ujs").start()
require("@rails/activestorage").start()
require("channels")

require("jquery")

require("flickity")
import "flickity/dist/flickity.min.css";

$(".main-carousel").flickity({
  contain: true
});

config/webpack/environment.js

const { environment } = require('@rails/webpacker')

const webpack = require('webpack')
environment.plugins.prepend(
  'Provide', new webpack.ProvidePlugin({
    $: 'jquery/src/jquery',
    jQuery: 'jquery/src/jquery',
    flickity: 'flickity/dist/flickity.pkgd.min'
  })
)

module.exports = environment

尝试 2:使用 jQueryBridget 进行 jQuery(熊飞飞)

No errors, but also no initialization

应用程序/javascript/packs/application.js

var $ = require('jquery');
var jQueryBridget = require('jquery-bridget');
var Flickity = require('flickity');

jQueryBridget('flickity', Flickity, $);

$(".main-carousel").flickity({
  contain: true
});

package.json

{
  "name": "flicketyflack",
  "private": true,
  "dependencies": {
    "@rails/actioncable": "^6.0.0",
    "@rails/activestorage": "^6.0.0",
    "@rails/ujs": "^6.0.0",
    "@rails/webpacker": "4.2.2",
    "flickity": "^2.2.1",
    "jquery": "^3.4.1",
    "jquery-bridget": "^2.0.1",
    "turbolinks": "^5.2.0"
  },
  "version": "0.1.0",
  "devDependencies": {
    "webpack-dev-server": "^3.10.3"
  }
}

最佳答案

也许您需要使用 jquery-bridget 将 Flickity 初始化为 jQuery 插件。

yarn add jquery-bridget

然后在application.js中

var $ = require('jquery');
var jQueryBridget = require('jquery-bridget');
var Flickity = require('flickity');

jQueryBridget( 'flickity', Flickity, $ );

# If your are using turbolinks
$(document).on('turbolinks:load', function() {
  $(".main-carousel").flickity({
    contain: true
  });
});

如果您不使用 Turbolink,请尝试以下操作:

$(document).ready(function() {
  $(".main-carousel").flickity({
    contain: true
  });
});

关于javascript - Rails 6 Webpacker : Attempting to install jQuery and JS library,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60160393/

相关文章:

javascript - 我可以在不同服务器上托管的 iframe 中使用 jQuery.ajax() 吗?

ruby-on-rails - 为什么新服务器上有 "PG::UndefinedFunction: ERROR: function gen_random_uuid() does not exist"而旧服务器上没有?

ruby-on-rails - 在 Ruby 数据库中存储使用自定义类的哈希值

JavaScript iframe 破坏

javascript - 如何在 jQuery 中识别元素是否靠近浏览器窗口的顶部

php - HTTP PUT 请求 - 进度条实现

javascript - jquery 用 noimage 图标替换损坏的图像

ruby-on-rails - 使用 Devise for Rails 禁止/阻止用户的最佳方法是什么?

javascript - 具有 Unicode 属性的 JSON

javascript - 使用 html2canvas 将 highcharts 图表呈现为 pdf 在 IE 和 Firefox 上不起作用