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?
CodePudding user response:
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.
CodePudding user response:
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;
},
};
CodePudding user response:
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