8

Sto usando RequireJS, backbone boilerplate con layout manager, JamJS per aiutare a gestire i pacchetti, e tutto funziona bene nello sviluppo, ma quando provo a creare una versione di produzione con file concatenati non funziona lavorareProblemi con RequireJS optimizer config, rilascio bbb

Sembra che il shim nella mia configurazione potrebbe non essere caricato. Ad esempio, l'errore che ottengo nella mia console è Uncaught TypeError: Cannot set property 'cookie' of undefined, quindi jQuery non viene caricato come una dipendenza per jquery.cookie. Ecco la mia app config:

// Set the require.js configuration for your application. 
require.config({ 

    // Initialize the application with the main application file and the JamJS 
    // generated configuration file. 
    deps: ["../vendor/jam/require.config", "main"], 

    paths: { 
    baseUrl : '/', 
    config : "config", 

    // JavaScript folders. 
    api : "libs/api", 
    app : "app", 

    // Libraries. 
    almond : "../vendor/jam/js/libs/almond", 
    engagement : "libs/engagement", 
    environment : "libs/environment", 
    jquery : "../vendor/jam/jquery/jquery", 
    jqueryui : "../vendor/js/libs/jquery-ui-1.9.1.custom.min", 

    "jquery-cookie" : "../vendor/jam/jquery-cookie/jquery.cookie", 

    chosen : "../vendor/js/libs/jquery.chosen.min", 
    colorpicker : "../vendor/js/libs/jquery.colorpicker", 
    bootstrap : "../vendor/js/libs/bootstrap", 
    jqueryuiwidget : "../vendor/js/libs/jquery.ui.widget", 

    jstemplates : "../vendor/js/libs/tmpl", 
    jsloadimage : "../vendor/js/libs/load-image", 
    jscanvastoblob : "../vendor/js/libs/canvas-to-blob", 
    iframetransport : "../vendor/js/libs/jquery.iframe-transport", 
    fileupload : "../vendor/js/libs/jquery.fileupload", 
    fileuploadfp : "../vendor/js/libs/jquery.fileupload-fp", 
    fileuploadui : "../vendor/js/libs/jquery.fileupload-ui", 
    fileuploadlib : "libs/fileupload", 

    highchartsgraytheme : "../vendor/js/libs/gray", 
    highchartsexporter : "../vendor/js/libs/exporting", 

    adpin : "libs/adpin", 

    val : "../vendor/js/libs/jquery.validate.min", 
    valmethods : "../vendor/js/libs/additional-methods.min", 

    advertiser : "libs/advertiser", 
    messages : "libs/messages", 

    user : "libs/user", 
    zeroclipboard : "../vendor/js/libs/zero-clipboard", 

    jqgrid : "../vendor/js/libs/jquery.jqGrid.min", 
    jqgridsource : "../vendor/js/libs/grid.locale-en", 

    reporting : "libs/reporting", 
    adlift : "libs/adlift", 
    utilities : "libs/utilities", 
    qrcode : "../vendor/js/libs/jquery.qrcode.min", 
    base64 : "../vendor/js/libs/base64", 

    kinetic : "../vendor/js/libs/kinetic.min", 
    canvaslib : "libs/canvas", 

    socialstream : "libs/socialstream", 
    analytics : "libs/analytics", 

    classie : "../vendor/js/libs/classie", 

    classie_modernizr : "../vendor/js/libs/modernizr.custom", 

    qtip2 : "../vendor/js/libs/jquery.qtip", 

    sponsored : 'libs/sponsoredcontent', 

    publisher : 'libs/publisher', 

    xml : '../vendor/jam/codemirror3/mode/xml/xml' 
    }, 

    shim: { 

    "jquery-cookie" : { 
     deps : ["jquery"] 
    }, 

    "api" : { 
     deps : ["environment"] 
    }, 

    "xml" : { 
     deps : ["codemirror3"] 
    }, 

    "classie" : { 
     deps : ["classie_modernizr"] 
    }, 

    "jqueryui" : { 
     deps : ["jquery"] 
    }, 

    "colorpicker":{ 
     deps : ["jquery"] 
    }, 

    "jqueryuiwidget" : { 
     deps : ["jquery"] 
    }, 

    "jstemplates" : { 
     deps : ["jquery"] 
    }, 

    "jsloadimage" : { 
     deps : ["jquery"] 
    }, 

    "jscanvastoblob" : { 
     deps : ["jquery"] 
    }, 

    "fileupload" : { 
     deps : ["jquery", "jqueryuiwidget"] 
    }, 

    "fileuploadfp" : { 
     deps : ["jquery", "jscanvastoblob", "fileupload"] 
    }, 

    "fileuploadui" : { 
     deps : ["jquery", "jstemplates", "jsloadimage", "fileuploadfp", "fileuploadlib"] 
    }, 

    "qrcode" : { 
     deps : ["jquery"] 
    }, 

    "base64" : { 
     deps : ["jquery"] 
    }, 

    "highchartsgraytheme" : { 
     deps : ["highcharts"] 
    }, 

    "highchartsexporter" : { 
     deps : ["highcharts"] 
    }, 

    "utilities" : { 
     deps : ["lodash", "jquery", "val"] 
    }, 

    "val" : { 
     deps : ["jquery"] 
    }, 

    "valmethods" : { 
     deps: ["jquery", "val"] 
    }, 

    "zeroclipboard": { 
     deps : ["jquery"] 
    }, 

    "jqgrid" : { 
     deps : ["jquery", "jqgridsource"] 
    }, 

    "jqgridsource" : { 
     deps : ["jquery"] 
    }, 

    "bootstrap" : { 
     deps : ["jquery"] 
    } 
    } 

}); 

Ecco come ho caricare il mio file di require.js:

<script data-main="/app/config" src="/dist/debug/require.js"></script> 

Tutte le idee su quello che potrebbe essere in corso? Quando uso bbb release, tutto si completa senza errori per creare quel file di debug.

+0

Non mi sono immerso troppo in profondità, ma a prima vista, "jquery-cookie" è l'unica libreria con citazioni attorno al nome. forse è una soluzione semplice come quella ?? – panzhuli

+0

@juliep nah questo non è il problema. le virgolette conservano solo la proprietà dell'oggetto. L'ho modificato per essere uguale agli altri per ogni evenienza, sempre lo stesso numero – Evan

+0

hai provato ad aggiungere shim a jquery? – Blacksonic

risposta

3

Ho alcuni suggerimenti, questo potrebbe sembrare stupido, ma dal momento che non ho le mani sul file indovinare è il meglio che posso fare, quindi, assicurati che non ci sia: define(["jquery"], ..... nel tuo file jquery-cookie , perché dovresti includerlo nello shim o con questo definire ma non entrambi perché potrebbe causare un conflitto. se ha funzionato fammi sapere per aggiungere una spiegazione del perché questo è successo, buona fortuna.

+0

questo era fondamentalmente il problema. c'era conflitto con define jquery e il mio jquery esportato – Evan

+0

buono per sapere che funzionava: D –

2

Evan, non sono sicuro di quale sia il tuo problema. Consiglierei di allontanarmi da JamJS in favore di Bower per questo. Chissà, forse la build di Jam è stata eliminata.

Il tuo spessore sembra corretto, ma mi chiedo se hai l'opzione mainConfigFile impostata nel tuo file Gruntfile.js nella sezione requirejs.

Il comando bbb è stato deprecato, quindi vorrei incoraggiarvi a indagare su https://github.com/backbone-boilerplate/backbone-boilerplate/wiki/Installation il nostro generatore dovrebbe soddisfare le vostre esigenze bene!

Problemi correlati