normalizePort() 函数在 Nodejs 中有什么作用?

What does normalizePort() function do in Nodejs?

我正在经历 然后我看到了这行代码:

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

为什么不

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

从这个博客有一个解释是:

The normalizePort(val) function simply normalizes a port into a number, string, or false.

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

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

如果我们不使用它会怎样?

(它的作用的一个例子将真正帮助我理解)谢谢。

来自 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. 检查端口值是否有效。

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

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

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

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

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

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 函数,这就是答案针对您的问题:

Why not

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