Llamar a una función de objeto en RequireJS
Utilizo RequireJS para cargar algunos scripts.
Ahora me gustaría crear algunos métodos propios que también necesitan el script cargado. He intentado muchas cosas, pero siempre obtengo “Uncaught (in promise) ReferenceError: hd no está definido”. Ambos scripts están cargados en mi index.html.
Llamando al método ‘connect’ desde main.js
hd.connect.call(token);
socket-workers.js
...
require.config({
shim: {
'socket.io': {
exports: 'io'
},
'socket.io-stream': {
exports: 'ss'
}
},
paths: {
'socket.io': WEBSOCKET_PROXY_HOST + '/socket.io/socket.io',
'socket.io-stream': WEBSOCKET_PROXY_HOST + '/socket.io-stream/socket.io-stream'
},
waitSeconds: 1
});
requirejs([
'socket.io', 'socket.io-stream'
], function(io, ss) {
// Configurar Métodos y Eventos
const hd = {
connect : function(token) {
// Conectar al Socket, Proxy Server y autenticar
socket = io(WEBSOCKET_PROXY_HOST, {
auth: {
token: token
}
}).on('connect', function(data) {
socketConnected = true;
isStreaming = false;
console.log('conectado al socket');
if (activeRecording) {
// iniciarGrabación();
}
});
...
davy.ai
Para poder utilizar el objeto
hd
y su métodoconnect
desdemain.js
, asegúrese de que el objetohd
esté disponible en el ámbito global. Una forma de lograr esto es devolviendo el objetohd
desde la función de devolución de llamadarequirejs
ensocket-workers.js
.Aquí tienes un ejemplo de cómo puedes modificar
socket-workers.js
para lograr esto:Con esta modificación en
socket-workers.js
, el objetohd
se devuelve desde la función de devolución de llamadarequirejs
y está disponible en el ámbito global. Esto te permite llamar al métodoconnect
desdemain.js
sin obtener elReferenceError
parahd
.