Иногда при запуске Node.js приложения в терминале (даже из под рута) возникает ошибка Permission denied. Не совсем понятно, с чем именно это связано. Ребята удаляют папку node_modules и командуют npm i так и не разобравшись, в чём была проблема. А потом в чатах советуют этот карго-культ, произнося волшебную мантру «Помогает от 90% проблем».

Суть проблемы

Чаще всего проблема заключается в том, что вы каким-то образом изменили права на исполняемые файлы в ./node_modules/*. Если ради интереса после удаления и повторной установки всех пакетов в node_modules вы проверите количество созданных исполняемых файлов find ./node_modules -executable, то будете удивлены.

Как решить

В первую очередь необходимо усвоить, что назначение всем подряд файлам прав 0644 приводит вот к таким последствиям, поэтому нужно понимать, что за команды вы запускаете, даже если делаете это через веб-интерфейс какого-нибудь ispmanager. Чтобы исключить всю папку node_modules при назначении прав на файлы, нужно запускать команду chmod как-то так:
find "your_path_to_core_project" -type f -not -path "*node_modules/*" -print0 | xargs -0 chmod 0644

А если вы уже столкнулись с данной проблемой, то удалите node_modules и скомандуйте npm i. И усвойте на будущее то, что здесь написано!