View in Telegram
Никита Прокопов негодует (как обычно). Обновил npm на минор и вылез ворнинг
(node:45421) ExperimentalWarning: CommonJS module /opt/homebrew/lib/node_modules/npm/node_modules/debug/src/node.js is loading ES Module /opt/homebrew/lib/node_modules/npm/node_modules/supports-color/index.js using require().
Support for loading ES Module in require() is an experimental feature and might change at any time
(Use node --trace-warnings ... to show where the warning was created)
Я мимо пройти не мог и решил разобраться. Первопричина понятна — node 23 включил экспериментальную поддержку синхронного require() для ESM-модулей. Зачем нужен ворнинг? Потому что поддержка неполноценная и если прилетит ESM c top level await то всё полетит к чертям (и это очень опасный момент с которым пока непонятно как жить). Ладно, ясно-понятно, экспериментальная версия node.js споткнулась. Завтра починят. Вроде бы ничего такого. Получается, Никита не прав, у нас всё относительно хорошо? Ну, не совсем. Интересен другой момент — почему это случилось на миноре npm и как оно работает в обычной node без реквайра? А разгадка простая: Во-первых supports-color апнули на мажор. Это модуль от Синдре. Ну вы понимаете. Синдре опять переписал всё на pure ESM Второй момент, как же оно работает сейчас? А никак не работает. Там внутри в debug/src/node.js — try catch
try {
   require('supports-color')
}  catch (error) {
        // Swallow - we only care if `supports-color` is available; it doesn't have to be.
}
И вот это уже печально. Апнули на сломанную версию, ошибок нет (они заглушены). https://github.com/npm/cli/issues/7857
Love Center - Dating, Friends & Matches, NY, LA, Dubai, Global
Love Center - Dating, Friends & Matches, NY, LA, Dubai, Global
Find friends or serious relationships easily