2015-06-02 11 views
6

Ich versuche, Slick Karussell (http://kenwheeler.github.io/slick/) zu verwenden und über npm installiert.Warum funktioniert Slick Carousel nicht mit browserify?

es über browserify wie das Einschließen:

slick = require('slick-carousel') 

versuchen, wie dies auszuführen:

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

Keine Konsole Fehler, Karussell Initialisierung nicht. Was ist los?

+0

Bitte prüfen package.json Datei. Slick-Karussell ist installiert oder nicht? – Prasanna

+0

scheint nicht installiert, aber warum? Es scheint, einige Klassen auf meine Domelemente anzuwenden ... – Dine

+0

1. installiert dann verwenden Sie "Slick-Karussell" -Funktion. Sie benötigen die Datei aber nicht installiert "Slick-Karussell", dann wie Sie auf die Funktionen zugreifen können. – Prasanna

Antwort

0

versuchen
$ = require('jquery')
vor
für mich slick = require('slick-carousel')

es funktioniert hinzuzufügen.

+3

Bitte [bearbeiten] Sie Ihre Antwort und erklären Sie ** warum ** das hilft. –

3

HINWEIS: Es wird nicht empfohlen, die Bibliothek zu bearbeiten. Wenn Sie möchten, dass Sie ein Workaround möchten, können Sie wie folgt folgen.

Ich hatte auch das gleiche Problem mit Slick mit browserify aber keine der Lösungen für mich gearbeitet. Dann nehme ich ein nahm in slick.js und geändert -

Suche:

(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($) { 

ersetzen:

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

die letzte Zeile hinzufügen -

Suche:

})); 

Ersetzen:

})(jQuery, window, document); 

Ich hoffe, es hilft, das Problem zu verstehen.

+0

Verwirrend zu folgen, aber es hat funktioniert. –

+0

Es hat auch für mich funktioniert. –

+0

Kannst du es umschreiben, es ist so verwirrend, was mit was ersetzen. – Nofel

1

Das Problem tritt dank dieser Code von 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); 
    } 

} 

Autor geht davon aus, dass, wenn Sie Commonjs Modul-Lader (wie Browserify) verwenden, sollten Sie in Sie Abhängigkeiten jQuery gehabt haben (es heißt direkt mit require('jquery')).

Ich ziehe diese Lösung:

  1. hinzufügen jQuery als NPM Abhängigkeit: npm install --save jquery
  2. Machen Sie es global, z.B. mit browserify-shim's export global oder mit: window.$ = window.jQuery = require('jquery');
  3. Dann können Sie sicher mit require('slick-carousel');
1

Slick benötige ich dieses Problem eine andere Art und Weise gelöst haben. Es gibt NPM-Paket slick-carousel-browserify.So :

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

Und:

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