Tengo un proyecto Node.js.
Quiero usar el paquete auto-bind
@v5.0.0.
Las versiones anteriores a la v4, son de tipo ESM. entonces no se puede usar por require('')
. pero mi proyecto Node.js se basa en módulos Commonjs. Así que no puedo usar la forma de import
.
mi problema: utilicé la siguiente forma de usar este paquete:
const autoBind = (...args) => import('auto-bind').then(({default: autoBind}) => autoBind(...args));
pero el módulo de controller.js
no envía este método de vinculación al módulo homeController.js
.
quiero poner, auto-bind
en el módulo controller.js
, luego usarlo en el módulo homeController.js
, por lo que, como resultado, puedo enviar un método de message
al constructor
de homeController
:
el módulo homeController.js
:
const controller = require('app/http/controllers/controller.js'); module.exports = new class homeController extends controller{ index(req,res){ res.send(this.message()); } message(){ return('<p> home!</p>'); } }
el módulo controller.js
:
const autoBind = (...args) => import('auto-bind').then(({default: autoBind}) => autoBind(...args)); module.exports = class controller { constructor(){ autoBind(this); } }
cuando llamo a su dirección en el navegador, devuelve este error:
TypeError: Cannot read properties of undefined (reading 'message')
nota: esto funciona con auto-bind@v1.2.0
sin ningún problema. pero su problema es por el tipo de ESM del módulo auto-bind
. ¿Cómo puedo arreglar esto?