Краткое вступление : мы начинаем использовать npm ci
для более надежной установки зависимостей для нашего реагирующего приложения вместо install
. Но при использовании ci
.
мы заметили странное поведение при отказе от обещаний.
Описание:
При запуске npm ci
в среде узла с NODE_ENV
, установленным на development
, мы получаем сотни предупреждений об обещаниях из библиотеки обещаний Bluebird:
(node:95984) Warning: .then() only accepts functions but was passed: [object Object]
Мне любопытно, происходят ли они из самого кода npm CI, поскольку мы никогда не видели этих ошибок, кроме случаев использования npm CI.
Вы также можете увидеть в их исходный код , что NPM использует библиотеку Bluebird Promise версии 3.5.3
.
Чтобы проверить это, я постепенно удалил все главные и dev-зависимости в нашем package.json, сгенерировав файлы блокировки и запустив npm ci
, чтобы увидеть, происходил ли он из каких-то определенных пакетов, но это происходило каждый раз до последний пакет (и альтернативные одиночные пакеты).
Я также создал совершенно отдельное репозиторий npm и установил пакет (act-scripts @ latest), сгенерировал файл блокировки, и при запуске npm ci
получил те же предупреждения об обещании.
Мы смогли заставить замолчать ошибки при сборке, установив переменную среды BLUEBIRD_PROMISES=0
в соответствии с рекомендациями этого npm , и это действительно заставило замолчать предупреждения. Но мы хотели бы знать, почему это происходит, и если есть что-то, лежащее в основе этих предупреждений, которое заслуживает большего внимания, чем просто заставляет их замолчать.
Информация о версии:
нпм: 6.4.1
узел: 10.15.0