模块中的函数"is not a function"导出 ?- 节点



我正试图在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

相关内容

最新更新