2013-05-07 9 views
7

Ich versuche, ein Require.js Projekt mit Intern zu testen. Ich habe in meinen Tests Fehler festgestellt, bei denen jQuery nicht definiert ist, wenn jQuery-Plugins geladen werden. Meine loader Config sieht wie folgt aus:Intern Konfiguration nicht AMD Shim

loader: { 
    // Aliased paths 
    paths: { 
    'dt': 'dt', 
    'jq': 'jquery', 

    'jquery': 'jquery/jquery-1.8.3', 
    'jquerymx': 'jquery/jquerymx-3.2.custom', 
    'jquery.ui': 'jquery/jquery-ui-1.9.2.custom.min', 
    'jquery.ui.widget': 'jquery/jquery.ui.widget', 
    'jquery.jscrollpane': 'jquery/jquery.jscrollpane.min.edit', 
    'jquery.colorbox': 'jquery/jquery.colorbox-min', 
    'jquery.selectbox': 'jquery/jquery.selectbox-0.2.min.edit', 
    'jquery.base64': 'jquery/jquery.base64', 
    'jquery.cookie': 'jquery/jquery.cookie', 
    'jquery.urldecoder': 'jquery/jquery.urldecoder.min', 
    'jquery.fileupload': 'jquery/jquery.fileupload', 
    'jquery.history': 'history/scripts/compressed/history.adapter.jquery', 

    'openajax': 'openajax_2.0.7/OpenAjaxUnmanagedHub', 
    'zeroclipboard': 'zeroclipboard/ZeroClipboard' 
    }, 

    // Plugin mappings 
    map: { 
    '*': { 
     'css': 'requirejs/require-css/css', 
     'text': 'requirejs/text' 
    } 
    }, 

    // Shims for non-AMD libraries, mainly jQuery plugins 
    shim: { 
    'openajax': { 
     exports: 'OpenAjax' 
    }, 

    'zeroclipboard': { 
     exports: 'ZeroClipboard' 
    }, 

    'jquerymx': ['jquery'], 
    'jquery.ui': ['jquery'], 
    'jquery.ui.widget': ['jquery'], 
    'jquery.jscrollpane': ['jquery'], 
    'jquery.colorbox': ['jquery'], 
    'jquery.selectbox': ['jquery'], 
    'jquery.base64': ['jquery'], 
    'jquery.cookie': ['jquery'], 
    'jquery.urldecoder': ['jquery'], 
    'jquery.fileupload': ['jquery'], 
    'jquery.history': [ 
     'jquery', 
     'history/scripts/compressed/history', 
     'history/scripts/compressed/history.html4' 
    ] 
    } 
} 

Ich habe überprüft, dass jQuery und meine anderen Abhängigkeiten machen geladen tatsächlich sind, und sie sind einfach nicht in der richtigen Reihenfolge. Verwendet der Dojo AMD Loader, den Intern verwendet, nicht die Shim-Konfiguration?

Antwort

3

Das Problem ist, dass der von Praktikant verwendete AMD Loader derzeit nicht die shim Konfigurationseigenschaft AMD Specification implementiert. Ich war mir eigentlich nicht bewusst, dass es Teil des Standards war, bis Sie diese Frage gestellt haben.

Im Moment könnten Sie Funktionstests mit einem anderen AMD-Lader über Intern durchführen, aber im Moment wäre es schwierig, Komponententests auf dem lokalen Rechner durchzuführen.

+1

Ah, ich hatte angenommen, dass es Shim implementiert hat, da es Teil der Spezifikation war. Vielleicht müssen Sie versuchen, das selbst hinzuzufügen :) – coreyschram

+0

Sie können Ihre Ladereihenfolge mit einem eigenen Lade-Plugin steuern. Siehe http://stackoverflow.com/a/26531410/1859442 – Benjamin

1

Alles, was ich tun musste, war die Verwendung von UseLoader config auf die require.js und poof. Ich hatte die vertraute Shim-Konfiguration und Pfadkonfiguration, die ich in meiner App verwende. Bam.

Verwandte Themen