[英]Function in module.exports "is not a function"? - nodejs
我正在嘗試在 module.exports 中的另一個 function ( getPort
) 中使用badPort
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(this.badPort(c_port));
return this.badPort(c_port) ? 80 : c_port;
},
};
但是,當我使用this.badPort(c_port)
時,它會拋出異常:
TypeError: this.badPort is not a function
但它顯然是在其上方初始化的 function。
但是,如果我取出()
, this.badPort
總是返回undefined
。
為什么會發生這種情況,我如何才能正確使用 function inside module.exports
? 是否也可以通過這種方式在module.exports
中聲明“全局變量”DEFAULT_PORT?
您可以通過將其更改為module.exports
來做到this
一點:
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;
},
};
要從其他 function 引用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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.