Estoy tratando de importar una función de otro archivo. Lo intenté haciendo esto:
principal.js:
const oauth2 = require('./utils/oauth2'); function startOAuth() { var token = oauth2.OAuth2.getToken(); }utilidades/oauth2.js:
module.exports = (function() { window.OAuth2 = { /** * Initialize */ init: function() { this._key = "token"; }, /** * Get Token * * @return OAuth2 access token if it exists, null if not. */ getToken: function() { try { return window['localStorage'][this._key]; } catch(error) { return null; } } }; OAuth2.init(); })();Obtuve el siguiente error:
TypeError no capturado: no se pueden leer las propiedades de undefined (leyendo 'getToken')
¿Qué hice mal? ¿Por qué NodeJS no encuentra la función getToken() ? ¡Muchas gracias por su ayuda!
PD: Sé que este es el lugar equivocado para decir que soy un principiante, pero lo soy;)
Estás exportando el resultado de llamar a una función sin retorno. Lo que ha asignado a module.exports es un patrón llamado Expresión de función invocada inmediatamente.
El código debería funcionar si, en cambio, asignó OAuth a una variable, llamó a init() justo después de la declaración y luego la exportó.
const OAuth2 = { /** * Initialize */ init: function () { this._key = ""; }, /** * Get Token * * @return OAuth2 access token if it exists, null if not. */ getToken: function () { try { return window["localStorage"][this._key]; } catch (error) { return null; } }, }; OAuth2.init(); module.exports = OAuth2;