'error in using ESM Package of "auto-bind" in node.js project

I have a Node.js project.

I want to use auto-bind package @v5.0.0.

The versions above v4 , are ESM type. so can't use then by require('') . but my Node.js project is based on Commonjs Modules. So i can't use of import way.

my problem: i used of bellow way to use of this package:

const autoBind = (...args) => import('auto-bind').then(({default: autoBind}) => autoBind(...args));

but the module of controller.js do not send this binding method to homeController.js module.

i want to put, auto-bind in controller.js module, then use it in homeController.js module, so in result, i can send message method to constructor of homeController:

the homeController.js module:

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>');
}
}

the controller.js module:

const autoBind = (...args) => import('auto-bind').then(({default: autoBind}) => autoBind(...args));
module.exports = class controller {
    constructor(){
        autoBind(this);
    }
}

when i call it's adress in browser, it return this erroe:

TypeError: Cannot read properties of undefined (reading 'message')

note: this works by [email protected] without any problem. but it's problem is by type of ESM of auto-bind module. how can fix this?



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source