簡體   English   中英

module.exports 中的 Function “不是函數”? - 節點

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM