Загрузка: long, ByteBuffer и ProtoBuff с requirejs

Работа над проектом, который получает его содержимое с ProtoBuff. Сделал так, чтобы он работал один раз с загрузкой скриптов JavaScript в HTML. Теперь рефакторинг для использования requirejs для загрузки скриптов. Но когда я пытаюсь использовать сценарии, выдает ошибку, сообщающую, что сценарии не загружены.

  • Require.js загружается в index.html
  • Бауэр используется для управления зависимостями.

Я почти уверен, что упускаю (простую) вещь здесь, надеюсь, кто-нибудь может помочь.

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

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

файлы long.js, ByteBuffer.js и ProtoBuf.js находятся на той же карте, что и App.js, где это называется.

* Хотя этот вопрос о requirejs и ByteBuffer выглядит многообещающим, я думаю, что здесь что-то упущено.

Это работает, функции в этих файлах доступны в остальной части области:

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

1 ответ

Решение

Вам нужно убедиться, что у вас правильно подключен requirejs и загружена соответствующая библиотека прото.

Вы можете использовать bower для управления зависимостями. устанавливать bower а также

bower install long byteBuffer protobuf requirejs-text requirejs-proto

Окончательный код может выглядеть примерно так:

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) {
    ...
});

некоторый код из https://www.npmjs.com/package/requirejs-proto

Другие вопросы по тегам