Estoy tratando de usar la función badPort dentro de otra función ( getPort ) en module.exports así:
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; }, }; Sin embargo, cuando uso this.badPort(c_port) arroja una excepción:
TypeError: this.badPort is not a functionPero es claramente una función como se inicializó justo encima de ella.
Sin embargo, si elimino () , this.badPort siempre devuelve undefined .
¿Por qué sucede esto y cómo podría usar correctamente la función dentro module.exports ? ¿Es posible declarar también la "variable global" DEFAULT_PORT en module.exports de esta manera?
Puedes hacerlo cambiando this a 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; }, };Y sobre la segunda pregunta... tendrías que redefinir tu módulo, para usar esa variable externamente, así:
module.exports.DEFAULT_PORT = 80;Entonces tendrás acceso a él:
var mod = require('mymodule'); console.log(mod.DEFAULT_PORT);No estoy al tanto de ninguna otra manera.
¿Has probado esto para cambiar ":" por "=" como:
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; }, };Para hacer referencia a badPort desde la otra función, puede escribirlo de esta manera:
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 };Y si tiene curiosidad sobre cómo importarlo correctamente, aquí hay un ejemplo de una importación correcta desde otro archivo js en el mismo directorio:
const port = require('./port.js'); console.log(port.badPort(1000)); Y su puerto predeterminado puede ser una variable de entorno usando process.env https://nodejs.org/dist/latest-v8.x/docs/api/process.html