Что делает normalizePort () в Nodejs? - PullRequest
0 голосов
/ 05 мая 2019

Я проходил этот ответ , затем я увидел эту строку кода:

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

Почему бы не

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

Из этого блога есть объяснение, что:

Функция normalizePort (val) просто нормализует порт в число, строку или значение false.

Я до сих пор не понимаю. Затем я проверил, что здесь за нормализация . У меня есть идея, но я все еще не понимаю.

Какова цель функции normalizePort ()?

Что будет, если мы не будем его использовать?

(пример того, что это действительно поможет мне понять) Спасибо.

Ответы [ 4 ]

1 голос
/ 05 мая 2019

normalizePort функция была введена в Экспресс-генератор , который был образцом от команды 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');

1 голос
/ 05 мая 2019

Вот что делает 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;
}

В большинстве случаев вы хотите, чтобы ваш порт был числом, а не строкой. Но бывают случаи, когда вам может понадобиться передать нечисловую строку, такую ​​как именованный канал, сокет и т. Д. Это просто превращает строки, которые анализируют числа, в числа и оставляет обычные строки в одиночку.

1 голос
/ 05 мая 2019

Из источника Экспресс-генератора:

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. Проверяет, является ли допустимое значение порта.

Если вы один из тех, кто предоставляет значения в коде, нет необходимостифункция.

0 голосов
/ 05 мая 2019

enter image description here

Я думаю, что это поможет прочитать этот раздел страницы

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

...