2016-12-23 2 views
5

habe ich select2 als Knotenmodul heruntergeladenWie benutze select2 mit webpack?

npm install select2 

und schloss es in meinem app.js:

require('select2')($); 


Wenn ich laufen webpack es keine Fehler gibt, aber wenn öffne ich die app Ich bekomme:

Uncaught TypeError: Object.defineProperty called on non-object(…) 

kommen von select2.js:

S2.define('select2/core',[ 
    'jquery', 
    './options', 
    './utils', 
    './keys' 
], function ($, Options, Utils, KEYS) { 
(...) 
} 

es geschieht, weil Modul Wrapper für select2 nur mit AMD arbeitet und ist unvereinbar mit Commonjs?

Antwort

1

Wo sehen Sie, wie Sie Select2 verwenden? Soweit ich von einem Blick auf das Projekt sehen kann, benötigen Sie jquery installiert als ein dep, aber dann wird es automatically required sein.

bei der Unterzeichnung der exportierten Funktion sucht es sieht aus wie ein jQuery Element und Optionen übernehmen könnte: https://github.com/select2/select2/blob/master/dist/js/select2.js#L5052

aber es nach dem Import, sollte es nur als Plugin jQuery angebracht werden, so würde ich denken dass $('.some-element').select2([options]); würde auch funktionieren.

Also haben Sie einfach versucht require('select2') (und npm i jquery --save wenn Sie nicht)?

+0

Natürlich hatte ich Jquery, ich dachte, es wäre zu offensichtlich, um das zu erwähnen. Das Problem war, dass einige jquery-Plugins in UMD verpackt sind, was einige seltsame Überprüfungen durchführt, wenn ich AMD, CommonJS oder keine verwende, und diese Überprüfung bricht in Webpack ab, weil Webpack beides unterstützt, so dass UMD-Wrapper annimmt, dass ich AMD benutze, obwohl ich commonJS verwende. Es gibt einen Hacky [Workaround] (http://stackoverflow.com/questions/28969861/managing-jquery-plugin-dependency-in-webpack) für dies in akzeptierter Antwort auf # 4. –

Verwandte Themen