Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js normalizePort()函数在Nodejs中做什么?_Node.js_Express_Normalize - Fatal编程技术网

Node.js normalizePort()函数在Nodejs中做什么?

Node.js normalizePort()函数在Nodejs中做什么?,node.js,express,normalize,Node.js,Express,Normalize,我正在浏览,然后我看到了这行代码: var port = normalizePort(process.env.PORT || '4300'); 为什么不呢 var port = (process.env.PORT || '4300'); 本博客对此有一个解释: normalizePort(val)函数只是将端口规范化为数字、字符串或false 我还是不明白。然后我看看什么是规范化。我有一些想法,但我还是不明白 normalizePort()函数的用途是什么 如果我们不使用它会发生什么 (举一

我正在浏览,然后我看到了这行代码:

var port = normalizePort(process.env.PORT || '4300');
为什么不呢

var port = (process.env.PORT || '4300');
本博客对此有一个解释:

normalizePort(val)函数只是将端口规范化为数字、字符串或false

我还是不明白。然后我看看什么是规范化。我有一些想法,但我还是不明白

normalizePort()函数的用途是什么

如果我们不使用它会发生什么

(举一个例子来说明它的作用会帮助我理解)谢谢。

来自Express Generator的:

function normalizePort(val) {
  var port = parseInt(val, 10);

  if (isNaN(port)) {
    // named pipe
    return val;
  }

  if (port >= 0) {
    // port number
    return port;
  }

  return false;
}
  • 执行parseInt,如果可能的话,它基本上将值转换为整数
  • 检查该值是否不是数字
  • 检查是否为有效的端口值

  • 如果您是在代码上提供值的人,则不需要该函数。

    以下是
    normalizePort()
    的功能:

    /**
     * Normalize a port into a number, string, or false.
     */
    
    function normalizePort(val) {
      var port = parseInt(val, 10);
    
      if (isNaN(port)) {
        // named pipe
        return val;
      }
    
      if (port >= 0) {
        // port number
        return port;
      }
    
      return false;
    }
    
    在大多数情况下,您基本上希望端口是数字而不是字符串。但在某些情况下,您可能希望传递非数字字符串,如命名管道、套接字等。这只是将解析为数字的字符串转换为数字,而不使用常规字符串。

    我认为这将有助于阅读本页的这一部分


    normalizePort
    函数是在中引入的,它是Express团队的样板文件

    从生成器代码:

    /**
    *将端口规范化为数字、字符串或false。
    */
    函数normalizePort(val){
    var port=parseInt(val,10);
    如果(伊斯南(港口)){
    //命名管道
    返回val;
    }
    如果(端口>=0){
    //端口号
    返回端口;
    }
    返回false;
    }
    
    说明: 此功能是一个安全防护装置,用于确保提供的端口为
    数字
    ,如果不是数字,则为
    字符串
    ,如果有任何其他设置,则将其设置为false

    如果您自己为环境变量提供端口,并通过某种配置确保端口始终是一个数字,那么您确实不需要
    normalizePort
    函数,这就是您问题的答案:

    为什么不呢

    var port = (process.env.PORT || '4300');
    
    变量端口=(process.env.port | |“4300”)


    返回false的不仅仅是undefined。为什么该注释会说
    命名管道