'Function in module.exports "is not a function"? - nodejs
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?
Solution 1:[1]
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;
},
};
Solution 2:[2]
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
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Lucas Bodin |
| Solution 2 |
