requirejs и ByteBuffer

Я новичок JavaScript и Google не помогает:

Я попытался загрузить ByteBuffer.js в модуле require.js:

define(['js/ByteBufferAB'], function (ByteBufferAB) {

var MessageBase = function () {
    this._version = 0; // unsinged int 16 bits
    this._dataType = "";

};

MessageBase.prototype.toBytes = function () {
    //console.log( new ByteBufferAB(58));
    var headerBytes = new ByteBufferAB(58); // <-- here comes the error
    headerBytes.clear();
    return headerBytes;
};


return MessageBase;

});

с тем же синтаксисом math.js загружается правильно.

Но с ByteBufferAB.js возникает следующая ошибка:

Uncaught TypeError: undefined is not a function

Что я делаю неправильно? Спасибо за помощь

1 ответ

Решение

В вашем define позвоните, вы ссылаетесь на модуль как js/ByteBufferAB поэтому RequireJS ищет модуль с именем js/ByteBufferAB, Тем не менее, модуль определяет себя как ByteBuffer:

/* AMD */ else if (typeof define === 'function' && define["amd"])
    define("ByteBuffer", ["Long"], function(Long) { return  loadByteBuffer(Long); });

Поскольку имя модуля жестко закодировано, вам необходимо иметь такое отображение в вашем paths в конфигурации, которую вы указываете для RequireJS:

ByteBuffer: "js/ByteBufferAB"

и вам нужно сослаться на модуль как ByteBuffer в вашем define вызов.

Ничего из этого не потребовалось бы, если бы разработчики для этой библиотеки не жестко закодировали имя, но у них есть, и вот мы здесь.

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