2016-10-07 1 views
0

Arbeiten an einem Projekt, das seinen Inhalt mit ProtoBuff bekommt. Hat es einmal mit dem Laden der JavaScripts in den HTML-Code funktioniert. Jetzt refactoring um Requirejs zum Laden der Skripte zu verwenden. Aber wenn ich versuche, die Skripte zu benutzen, gibt es einen Fehler und sagt mir, dass die Skripte nicht geladen sind.Loading: long, ByteBuffer und ProtoBuff mit requirejs

  • Require.js ist in der index.html geladen
  • Bower verwendet wird, um Abhängigkeiten zu verwalten.

Ich bin mir ziemlich sicher, dass ich eine (einfache) Sache hier vermisse, hoffe, dass jemand helfen kann.

requirejs.config({ 
    long : "long", 
    ByteBuffer : "ByteBuffer", 
    ProtoBuf : "ProtoBuf" 
}); 

requirejs([ "long", "ByteBuffer", "ProtoBuf" ], 
    function(long, ByteBuffer, ProtoBuf) { 
}); ​ 

die Dateien long.js, ByteBuffer.js und ProtoBuf.js sind alle in der gleichen Karte wie die App.js, wo dies genannt wird.

* Während dies question about requirejs and ByteBuffer sieht vielversprechend aus, ich denke, ich vermisse hier etwas.

funktionierts sind die Funktionen in diesen Dateien zugänglich im Rest des Anwendungsbereichs:

requirejs([ "otherPage", "differentPage" ], 
    function(util) { 
}); 
+0

Hmm .. ja Sie * sind * etwas fehlt, weil die Konfiguration zeigen, kann man nicht möglicherweise arbeiten. Es sieht so aus, als ob Sie versucht haben, Pfade zu setzen, so dass alle Schlüssel-Wert-Paare, die Sie anzeigen, in ['paths'] sein müssen (http://requirejs.org/docs/api.html#config-paths). Aber das kann nicht das einzige Problem sein, denn selbst wenn Sie diesen Fix durchführen, ist das, was Sie in 'Pfaden' haben, nichts anderes als das, was RequireJS * standardmäßig * tut. Sie müssen wahrscheinlich Ihre 'baseUrl' Einstellung auf einen korrekten Wert setzen. – Louis

+0

Ich würde versuchen, requirejs.config hinzufügen, nachdem die normale requirejs Methode nicht funktioniert hat ... Es lädt andere Skripte nett. – Flummox

Antwort

1

Sie machen müssen sicherstellen, dass Sie haben requirejs richtig angeschlossen ist und dass Sie die entsprechende Proto-Bibliothek geladen.

Sie können Bower verwenden, um Abhängigkeiten zu verwalten. Installieren Sie bower und

bower install long byteBuffer protobuf requirejs-text requirejs-proto 

Der endgültige Code kann dann wie folgt aussehen:

require.config({ 
    paths: { 
     'Long': '../../bower_components/long/dist/Long', 
     'ByteBuffer': '../../bower_components/byteBuffer/dist/ByteBufferAB', 
     'ProtoBuf': '../../bower_components/protobuf/dist/ProtoBuf', 
     'text': '../../bower_components/requirejs-text/text', 
     'proto': '../../bower_components/requirejs-proto/proto' 
    }, 
    proto: { 
     ext: 'proto', 
     convertFieldsToCamelCase: false, 
     populateAccessors: true 
    } 
}); 

require(['proto!test'], function(builder) { 
    var pack = builder.build('pack'); 
    var Message1 = builder.build('pack.Message1'); 
}); 

require(['proto!test::pack.Message1', 'proto!test::pack.Message2'], function(Message1, Message2) { 
    ... 
}); 

einige Code aus https://www.npmjs.com/package/requirejs-proto

+0

Es funktioniert! Vielen Dank! – Flummox