2016-12-23 4 views
5

나는에 의해 노드 모듈로 select2을 다운로드 한webpack에서 select2를 사용하는 방법은 무엇입니까? 내 <code>app.js</code>에서 그것을</p> <pre><code>npm install select2 </code></pre> <p>및 포함 :

require('select2')($); 


내가 오류가없는 webpack를 실행할 수 있지만 때 나는 응용 프로그램을 열 때 내가 얻을 :

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

에서 오는:

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

select2에 대한 모듈 래퍼 AMD에서만 작동하고 CommonJS와 호환되지 않기 때문에이 발생합니까?

답변

1

어디서 select2를 사용하는 것이 나타 났습니까? 지금까지 프로젝트를 보면서 알 수 있듯이 jquery이 dep로 설치되었지만 automatically required이됩니다.

그것은 jQuery를 요소 및 옵션이 걸릴 수 있습니다 것 같습니다 내 보낸 함수의 서명을 보면

: https://github.com/select2/select2/blob/master/dist/js/select2.js#L5052

그러나 그것을 가져온 후, 그것은 단지 플러그인으로 jQuery를 부착되어야한다, 그래서 나는 생각할 것 그 $('.some-element').select2([options]);도 작동합니다.

그럼 간단히 시도해 봤습니까? require('select2') (그렇지 않은 경우 npm i jquery --save)?

+0

물론 나는 jquery를 가지고 있었고, 나는 그것을 언급하는 것이 너무 명백하다고 생각했다. 문제는 일부 jquery 플러그인이 UMD에 포장되어 있습니다.이 어댑터는 AMD, CommonJS 또는 none을 사용하면 Webpack에서이 체크가 깨집니다. Webpack은 둘 다 지원하기 때문에 UMD 랩퍼는 commonJS를 사용하더라도 AMD를 사용한다고 가정합니다. # 4에서 허용 된 답변에서이를 위해 해킹 된 [해결 방법] (http://stackoverflow.com/questions/28969861/managing-jquery-plugin-dependency-in-webpack)이 있습니다. –