I’m trying to use badPort
function inside another function (getPort
) in module.exports
like so:
DEFAULT_PORT = 80; module.exports = { badPort: (c_port, min=80, max=90) => { return isNaN(c_port) || !between(c_port, min, max); }, getPort: (c_port, min=80, max=90) => { console.log(this.badPort(c_port)); return this.badPort(c_port) ? 80 : c_port; }, };
However, when I use this.badPort(c_port)
it throws an exception:
TypeError: this.badPort is not a function
But it’s clearly a function as initialised right above it.
If however I take out the ()
, this.badPort
always returns undefined
.
Why is this happening and how would I be able to correctly use the function inside module.exports
? Is it possible to also declare the “Global variable” DEFAULT_PORT in module.exports
this way?
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
You can do it, by changing this
to module.exports
:
DEFAULT_PORT = 80; module.exports = { badPort: (c_port, min=80, max=90) => { return isNaN(c_port) || !between(c_port, min, max); }, getPort: (c_port, min=80, max=90) => { console.log(module.exports.badPort(c_port)); return module.exports.badPort(c_port) ? 80 : c_port; }, };
And about second question… you would have to redefine your module, to use that variable externally, like this:
module.exports.DEFAULT_PORT = 80;
Then you will have access to it:
var mod = require('mymodule'); console.log(mod.DEFAULT_PORT);
I am not aware of any other way.
Method 2
Have you try this to change “:” by “=” like:
DEFAULT_PORT = 80; module.exports = { badPort = (c_port, min=80, max=90) => { return isNaN(c_port) || !between(c_port, min, max); }, getPort = (c_port, min=80, max=90) => { console.log(this.badPort(c_port)); return this.badPort(c_port) ? 80 : c_port; }, };
Method 3
To reference badPort
from the other function you can write it this way:
DEFAULT_PORT = 80; const badPort = (c_port, min=80, max=90) => { return isNaN(c_port) || !between(c_port, min, max); }; const getPort = (c_port, min=80, max=90) => { console.log(badPort(c_port)); return badPort(c_port) ? 80 : c_port; }; module.exports = { badPort, getPort };
And if you’re curious on how to import it correctly, here is an example of a correct import from another js file in the same directory:
const port = require('./port.js'); console.log(port.badPort(1000));
And your default port can be an environment variable using process.env
https://nodejs.org/dist/latest-v8.x/docs/api/process.html
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0