2015-04-15 15 views
13

Yani, kullanıyorum RequireJS "Modül tanımlanmadı" ve kurulduktan bir üçüncü taraf bileşenini yüklemeye çalışırken, React:module.exports

npm install react-autocomplete 

yapı buradadır: https://github.com/rackt/react-autocomplete/tree/master/lib

Şimdi, şöyle requireJS yüklendiğinde başlatılan bir main.js dosyası, var: Artık

require.config({ 
paths: { 
     "react" : "react/react", 
     "jsx-transformer" : "react/JSXTransformer", 
     "react-autocomplete" : "node_modules/react-autocomplete/lib/main" 
    } 
}); 

require(["react"], function(react) { 
    console.log("React loaded OK."); 
}); 

require(["jsx-transformer"], function(jsx) { 
    console.log("JSX transformer loaded OK."); 
}); 

require(['react-autocomplete'], function (Autocomplete) { 
    console.log("React autocomplete component loaded OK."); 
    var Combobox = Autocomplete.Combobox; 
    var ComboboxOption = Autocomplete.Option; 
    console.log("Autocomplete initiated OK"); 
}); 

, Tamam bütün yükler, ancak üçüncü deyimi, bir "modül değildir atar gerektirir şuna benzer üçüncü taraf bileşeninde main.js dosya için, "tanımlamıştır:

module.exports = { 
    Combobox: require('./combobox'), 
    Option: require('./option') 
}; 

Bunun bir CommonJS tarzı modülü gerektiren çalışmakla ilgisi var okuyorduk, ama bunu kendi başıma nasıl tamir edeceğimi anlayamıyorum, bu konuda yeniyim.

kimse ben bunun üstesinden nasıl net bir örnek var mı?

cevap

20

RequireJS CommonJS modülleri yükleyemez. Ancak, onları yüklemek için yapabileceğiniz en az bir değişiklik var. Böyle bir define çağrı koymayı var: Eğer dönüştürmek için gereken modüllerin bir grup varsa

define(function (require, exports, module) { 

    module.exports = { 
    Combobox: require('./combobox'), 
    Option: require('./option') 
    }; 

}); 

veya CommonJS desen yazılmış bir üçüncü taraf kitaplığı kullanarak ve istediğiniz takdirde dönüştürmek o bir yapı sürecinin bir parçası olarak, sizin için dönüşüm gerçekleştirmek için r.js kullanabilirsiniz.

+1

Sağ, sorun o zaman üçüncü taraf bileşeninde işe yaramaz olacağım sanırım. Ama teşekkürler! – joakimnorberg

4

sorun requireJS CommonJS modüllerini sadece AMD desteklemediği olmasıdır. Üçüncü parti kütüphane AMD desteklemiyorsa Yani o zaman o iş için biraz çemberler üzerinden atlamak gerekir.

Eğer O beri modül yükleme için browserify veya webpack kullanarak öneririm seçeneği varsa

tüm üçüncü taraf bileşenler CommonJS modül olarak NPM yayınlanır tepki tepki topluluğun çoğunluğunun seçmiş araçları ve pratik olarak bulunmaktadır. Olduğu gibi

İlgili konular