Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

why is slick carousel not working with browserify?

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?

like image 240
Dine Avatar asked Jun 02 '15 09:06

Dine


3 Answers

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.

like image 164
HADI Avatar answered Oct 29 '22 23:10

HADI


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');
like image 27
Michał Pierzchała Avatar answered Oct 29 '22 21:10

Michał Pierzchała


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'));
like image 36
Anatoliy Tszyan Avatar answered Oct 29 '22 22:10

Anatoliy Tszyan