node.js: версия зависимости (момент-час) изменяется во время выполнения - PullRequest
0 голосов
/ 17 мая 2018

В последний день я исследовал загадочную проблему, в которой функция moment-timezone не будет работать при определенных, казалось бы, произвольных обстоятельствах. Я обнаружил, что версия моей библиотеки moment-timezone во время выполнения менялась в какой-то момент с версии 0.5.17 до 0.5.13.

Перед добавлением дополнительной информации, это проблема node.js или moment-timezone?

Конкретная проблема с moment-timezone В итоге я решил с помощью yarn селективные-версии-разрешения , но если это действительно проблема node.js, я думаю, что требуются более экстремальные меры ( установка пряжи --flat ?).

Я не знаю, какая зависимость вызывала изменение версии во время выполнения, но это был соответствующий раздел из моего файла yarn.lock до добавления раздела resolutions:

moment-timezone@0.5.17:
  version "0.5.17"
  resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.17.tgz#3c8fef32051d84c3af174d91dc52977dcb0ad7e5"
  dependencies:
    moment ">= 2.9.0"

moment-timezone@^0.5.0, moment-timezone@^0.5.4, moment-timezone@~0.5.5:
  version "0.5.13"
  resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.13.tgz#99ce5c7d827262eb0f1f702044177f60745d7b90"
  dependencies:
    moment ">= 2.9.0"

Как видите, моя прямая зависимость была от версии 0.5.17 , но зависимость других моих модулей была разрешена до версии 0.5.13 . Но я не понимаю, как в какой-то момент моя зависимость стала разрешаться до 0.5.13 .

Для проверки версии moment-timezone я просто использовал moment.tz.version. Это означает, что в моем рабочем коде следующий код печатал 0.5.17 , пока в какой-то момент не произойдет внезапная печать 0.5.13 :

const moment = require('moment-timezone');
console.log(`moment.tz.version: ${moment.tz.version}`);

Еще одна деталь: функция момента-часового пояса, которая нарушалась при изменении версии на 0.5.13 , была необязательным флагом для функции moment.tz , добавленной в версии 0.5.14 , в этом коде:

moment(utcDateTime, format).clone().tz(timezone, true)

Может кто-нибудь объяснить, как это возможно? Я надеюсь, что это ошибка в часовом поясе, а не в node.js ...

...