6

I'm trying to use slick carousel (http://kenwheeler.github.io/slick/) and installed via npm.

Including it via browserify like this:

slick = require('slick-carousel')

trying to run like this:

$('.gallery__carousel').slick();

No console errors, carousel not initialising. What's going on?

JasonMArcher
  • 14,195
  • 22
  • 56
  • 52
Dine
  • 7,223
  • 8
  • 25
  • 35

5 Answers5

4

NOTE: It's not recommended to edit library. If still in case you want a workaround then you can follow like below.

I also had the same problem with using slick with browserify but none of solutions worked for me. Then i take a took into slick.js and changed -

Find:

(function(factory) {
    'use strict';
    if (typeof define === 'function' && define.amd) {
        define(['jquery'], factory);
    } else if (typeof exports !== 'undefined') {
        module.exports = factory(require('jquery'));
    } else {
        factory(jQuery);
    }

}(function($) {

Replace:

;(function ( $, window, document, undefined ) {

add the last line -

Find:

}));

Replace:

})( jQuery, window, document );

Hope it helps to understand the problem.

HADI
  • 2,829
  • 1
  • 26
  • 26
  • Can you rewrite it, It is so confusing replace what with what. – localhost Jul 26 '17 at 13:40
  • @nofel try pull latest slick carousel and author might fixed that. If still not fixed then open slick carousel and find the code block as per i mentioned and delete that and paste respective code like above. – HADI Aug 02 '17 at 06:01
  • Can u filter your code. It's really hard to understand if I should find all of chuck of code and replace it with small bit or how? – localhost Aug 02 '17 at 06:38
1

The problem occurs thanks to this code of Slick v1.5.x:

(function(factory) {
    'use strict';
    if (typeof define === 'function' && define.amd) {
        define(['jquery'], factory);
    } else if (typeof exports !== 'undefined') {
        module.exports = factory(require('jquery'));
    } else {
        factory(jQuery);
    }

}

Author assumes, that if you use CommonJS module loader (like Browserify), you should have had jQuery in you dependencies (it's called directly with require('jquery')).

I prefer this solution:

  1. Add jQuery as NPM dependency: npm install --save jquery
  2. Make it global, e.g. with browserify-shim's export global or with: window.$ = window.jQuery = require('jquery');
  3. Then you can safely require Slick with require('slick-carousel');
Michał Pierzchała
  • 1,762
  • 1
  • 15
  • 20
1

I've solved this problem another way. There is npm package slick-carousel-browserify. So:

npm install slick-carousel-browserify --save-dev

And:

$ = require ('./../../bower_components/jquery/dist/jquery.js');
slick = require('slick-carousel-browserify');
slick($('.selector'));
0

try to add
$ = require('jquery')
before
slick = require('slick-carousel')

it works for me.

0
"browserify-shim": {
"jquery": "global:jQuery",
     "slick-carousel": {
      "depends": [
        "jquery: jQuery"
      ],
      "exports": "$.fn.slick"
    }
  },
  "browserify": {
    "transform": [
     "browserify-shim"
    ]
  }
jyotishman saikia
  • 2,079
  • 1
  • 15
  • 11