我正试图在module.exports
中的另一个函数(getPort
(中使用badPort
函数,如下所示:
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;
},
};
然而,当我使用this.badPort(c_port)
时,它会抛出一个异常:
TypeError: this.badPort is not a function
但它显然是一个在上面初始化的函数
然而,如果我取出()
,this.badPort
总是返回undefined
。
为什么会发生这种情况,我如何才能正确使用module.exports
中的函数?是否也可以声明";全局变量";以这种方式在module.exports
中DEFAULT_PORT?
您可以将this
更改为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;
},
};
关于第二个问题。。。你必须重新定义你的模块,才能在外部使用这个变量,比如:
module.exports.DEFAULT_PORT = 80;
然后你就可以访问它:
var mod = require('mymodule');
console.log(mod.DEFAULT_PORT);
我不知道还有其他办法。
你尝试过这样做吗"通过"="类似:
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;
},
};
要从其他函数引用badPort
,可以这样写:
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
};
如果你想知道如何正确导入,这里有一个从同一目录中的另一个js文件正确导入的例子:
const port = require('./port.js');
console.log(port.badPort(1000));
您的默认端口可以是使用process.env
的环境变量https://nodejs.org/dist/latest-v8.x/docs/api/process.html