2017-02-08 5 views
0

Ich versuche, eine Node-Bibliothek mit RequireJS zu verwenden, aber ich kann es nicht AMD kompatibel machen. Ich benutze diese Bibliothek: https://github.com/wdavidw/node-padWrap CommonJS 3rd Party Bibliothek als AMD-Modul

Es exportiert eine Funktion. Die Frage ist, wie man es als AMD-Modul umschließt? Ich habe versucht, es mit shim options zu exportieren, aber es hat nicht funktioniert. Ich sehe keinen Fehler, behebt aber eine undefined Instanz.

Irgendwelche Vorschläge?

Was ich bisher versucht:

let config: RequireConfig = { 
    paths: { 
     "text": "../node_modules/requirejs-text/text", 
     "plugins": "../node_modules/durandal/js/plugins", 
     "durandal": "../node_modules/durandal/js", 
     "transitions": "../node_modules/durandal/js/transitions", 
     "knockout": "../node_modules/knockout/build/output/knockout-latest", 
     "jquery": "../node_modules/jquery/dist/jquery", 
     "bootstrap": "../node_modules/bootstrap/dist/js/bootstrap", 
     "pad": "../node_modules/pad/lib/index", 
     "i18n-iso-countries": "../node_modules/i18n-iso-countries/index", 
     "json": "../node_modules/requirejs-plugins/src/json", 
     "alpha2codes": "../node_modules/i18n-iso-countries/alpha2codes", 
     "codes": "../node_modules/i18n-iso-countries/codes.json", 
     "languages": "../node_modules/i18n-iso-countries/languages", 
     "ar": "../node_modules/i18n-iso-countries/langs/ar.json", 
     "cs": "../node_modules/i18n-iso-countries/langs/cs.json", 
     "de": "../node_modules/i18n-iso-countries/langs/de.json", 
     "en": "../node_modules/i18n-iso-countries/langs/en.json", 
     "es": "../node_modules/i18n-iso-countries/langs/es.json", 
     "et": "../node_modules/i18n-iso-countries/langs/et.json", 
     "fi": "../node_modules/i18n-iso-countries/langs/fi.json", 
     "fr": "../node_modules/i18n-iso-countries/langs/fr.json", 
     "hu": "../node_modules/i18n-iso-countries/langs/hu.json", 
     "it": "../node_modules/i18n-iso-countries/langs/it.json", 
     "nb": "../node_modules/i18n-iso-countries/langs/nb.json", 
     "nl": "../node_modules/i18n-iso-countries/langs/nl.json", 
     "nn": "../node_modules/i18n-iso-countries/langs/nn.json", 
     "pl": "../node_modules/i18n-iso-countries/langs/pl.json", 
     "pt": "../node_modules/i18n-iso-countries/langs/pt.json", 
     "ru": "../node_modules/i18n-iso-countries/langs/ru.json", 
     "sv": "../node_modules/i18n-iso-countries/langs/sv.json", 
     "tr": "../node_modules/i18n-iso-countries/langs/tr.json", 
     "zh": "../node_modules/i18n-iso-countries/langs/zh.json" 
    }, 
    shim: { 
     "bootstrap": { 
      deps: ["jquery"] 
     }, 
     "i18n-iso-countries": { 
      deps: ["pad", "alpha2codes", "languages"] 
     }, 
     "pad": { 
      exports: "pad" 
     } 
    },  
    urlArgs: `=${new Date().getTime()}` 
}; 

requirejs.config(config); 
require(['jquery', 'bootstrap'],() => { 
    require(["./bootstrapper"], (b) => { 
     var instance = new b(); 
     instance.init(); 
    }); 
}); 

Antwort

1

Die shim Option nicht wickeln Nicht-AMD-Module in einem AMD define. Es ist wirklich für Skripte gedacht, die kein Modulsystem unterstützen. einen Commonjs Modul mit RequireJS die minimalen Arbeit zu laden, die getan werden muss, ist es mit einem define Aufruf dieser Form zu wickeln:

define(function (require, exports, module) { 
    // script contents here... 
}); 

Es gibt viele Möglichkeiten, es zu tun. Sie können einen Build-Schritt in jedem Build implementieren, den Sie zum Hinzufügen des Wraps verwenden. Oder Sie können ein Tool verwenden, das den Optimierer von RequireJS bereits unterstützt (r.js).

Verwandte Themen