Uso RequireJS para cargar algunos scripts.
Ahora me gustaría crear algunos métodos propios que también necesiten el script cargado. He intentado mucho, pero siempre obtengo Uncaught (in promise) ReferenceError: hd is not defined . Ambos scripts están cargados en mi index.html.
Llamar al método 'conectar' 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) { // Setup Methods & Events const hd = { connect : function(token) { // Connect to Socket, Proxy Server & authenticate socket = io(WEBSOCKET_PROXY_HOST, { auth: { token: token } }).on('connect', function(data) { socketConnected = true; isStreaming = false; console.log('connected to socket'); if (activeRecording) { //#startRecording(); } }); ...RequireJS se puede usar de esta manera, pero hay una forma más adecuada: defina un módulo y luego exíjalo mientras define otro módulo:
socket-trabajadores.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 }); define('hd', [ 'socket.io', 'socket.io-stream' ], function(io, ss) { // Setup Methods & Events const hd = { connect : function(token) { // Connect to Socket, Proxy Server & authenticate socket = io(WEBSOCKET_PROXY_HOST, { auth: { token: token } }).on('connect', function(data) { socketConnected = true; isStreaming = false; console.log('connected to socket'); if (activeRecording) { //#startRecording(); } }); ); return hd;principal.js:
define(['hd'], function (hd) { hd.connect.call(token); });Finalmente he encontrado una solución para resolver este problema. he añadido
window.hd = hd;dentro de la función para hacer que los métodos estén disponibles.
Ahora puedo llamar a todos los métodos con, por ejemplo hd.connect(), hd.disconnect()