2016-03-23 7 views
0

Ich benutze Lenker mit Require.js, aber aus bestimmten Gründen ist Lenker nicht definiert.Lenker ist undefined mit Require.js

Meine config:

require.config({ 
    paths: { 
     underscore: "lib/underscore-min",    //1.8.3 
     backbone: "lib/backbone-min",     //1.2.3 
     jquery: "lib/jquery-2.1.4.min",     //2.1.4 
     marionette: "lib/backbone.marionette.min",  //2.4.3 
     handlebars: "lib/handlebars.runtime.amd.min", //4.0.5 

    shim: { 
     "underscore": { 
      exports: "_" 
     }, 
     "backbone": { 
      deps: ["underscore", "jquery"], 
      exports: "Backbone" 
     }, 
     "jquery": { 
      exports: "jquery" 
     }, 
     "marionette": { 
      deps: ["backbone", "jquery"], 
      exports: "Marionette" 
     }, 
     "handlebars":{ 
      exports: "Handlebars" 
     } 
    } 
}); 

... und als in der gleichen Datei:

require(["handlebars"], function(Handlebars){ 
    "use strict"; 
    console.log(Handlebars); //undefined 
}); 

In einer anderen Datei:

define(["handlebars"], function(Handlebars){ 
    "use strict"; 

    console.log(Handlebars); //still undefined 
}); 

Ich verwende auch vorkompilierte Vorlagen , die völlig in Ordnung sind, also habe ich keine Ahnung, woran könnte das liegen?

Vielen Dank im Voraus!

---- ---- SOLUTION

Wie Rajab darauf hingewiesen, das Problem war, dass ich verwenden "handlebars" statt "handlebars.runtime" so Dank für seine Hilfe!

+0

sollten Sie nicht die Abhängigkeiten für die Datei angeben, die Sie laden? – Yerken

+0

Es war nur ein Beispiel, also schrieb ich nur die Teile, die notwendig waren, um das Problem zu lösen. – Dave

Antwort

1

Sie müssen verwenden:

erfordern ([ "handlebars.runtime"], Funktion (Lenker) { `

statt

erfordern ([" Lenker "], Funktion (Lenker) {`

und auch Shim wird verwendet für Module, die AMD nicht unterstützen. Shim in Ihrem Beispiel völlig nutzlos. Alle diese Bibliotheken unterstützen AMD. Zum Beispiel bei 16 Linie in Backbone.js aussehen:

define(['underscore', 'jquery', 'exports'], function(_, $, exports) { 

oder Linie 1002 in handlebars.runtime.amd.js

define('handlebars.runtime', ['exports', 'module', './handlebars/base' ... etc 

Alle Abhängigkeiten bereits in seinem Innern. Sie brauchen also nur Pfade in der Konfiguration:

das ist alles.

+0

Ja, das war das Problem. Danke für die Hilfe und die Vorschläge! – Dave