Node.js中的normalizePort()函数有什么作用?

时间:2019-05-05 04:37:39

标签: node.js express normalize

我正在经历this answer,然后看到了以下代码行:

var port = normalizePort(process.env.PORT || '4300');

为什么不

var port = (process.env.PORT || '4300');

此博客有一个解释:

  

normalizePort(val)函数只是将端口标准化为数字,字符串或false。

我还是不明白。然后,我检查什么是归一化here。我有个主意,但我还是不明白。

normalizePort()函数的作用是什么?

如果不使用它会发生什么?

(它的作用示例确实可以帮助我理解)谢谢。

4 个答案:

答案 0 :(得分:1)

来自Express Generator的source

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

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

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

  return false;
}
  1. 执行parseInt,如果可能的话,它将本质上将值转换为整数。
  2. 检查该值是否不是数字。
  3. 检查端口号是否有效。

如果您是在代码上提供值的人,则不需要此功能。

答案 1 :(得分:1)

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;
}

在大多数情况下,您基本上希望端口为数字而不是字符串。但是在某些情况下,您可能希望传递非数字字符串,例如命名管道,套接字等。这只会将解析为数字的字符串转换为数字,而不再包含常规字符串。

答案 2 :(得分:1)

normalizePort功能是在express-generator中引入的,它是Express团队的样板。

通过生成器代码:

/**
 * 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;
}

说明: 此功能是安全护栏,可确保提供的端口为number,如果不是数字,则为string,如果有其他设置,则为false。

如果您要自己为环境变量提供端口,并确保始终通过一些配置参数来确保端口号是一个数字,那么您实际上不需要normalizePort函数。问题:

  

为什么不

     

var port =(process.env.PORT ||'4300');

答案 3 :(得分:0)

enter image description here

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

https://brianflove.com/2016/03/29/typescript-express-node-js/