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
вызов.
Ничего из этого не потребовалось бы, если бы разработчики для этой библиотеки не жестко закодировали имя, но у них есть, и вот мы здесь.