Ошибка error spawn wine enoent wow

Обновлено: 07.07.2024

Сегодня я пытался установить зависимости в одном проекте на общем с другими разработчиками серваке. Использовал для установки зависимостей из package.json npm install . Всё стандартно, ничего необычного, локально на своей машине с CentOS 7 я делал это много раз, и проблем никогда не наблюдалось. Но тут что-то пошло не так, и мне вылетела странная ошибка error: npm ERR! Error: ENOENT, lstat . Надписи на экране стали пугающе красными.

Я попытался перезапустить установку, но результатов эти действия никаких не дали. Немного побеседовав с Гуглом, нашёл лаконичное и простое решение своей проблемы на github’е:

И всё! Проблема решена, и экран окрасился в приятные зелёные тона. Магия, скажете вы. А смысл прост: эта команда очищает все коряво установленные пакеты в вашей локальной папке пакетов node_modules, которые и вызывают ошибки при установке.

По причине этих кривых пакетов у нас npm install и не завершался нормально. npm cache clean удалит эти нехорошие пакеты, и после этого вы сможете спокойно вызывать npm install или npm install -g <package_name> . Проблем возникнуть не должно. Ну лично у меня после очистки кэша всё сразу поставилось гладко.

:)

Если вам этот совет помог, поделитесь ссылкой на решение со своими друзьями и коллегами!

Примечание автора: многие проблемы с этой ошибкой побудили меня опубликовать этот вопрос для будущих ссылок.

вопросы:

Я нашел особый простой способ получить представление о первопричине:

Я нашел очень простой способ определить, какая команда вызывает проблему, а не добавлять прослушиватели событий везде в вашем коде, как предложено в ответе @laconbass. Ключевая идея-обернуть исходный вызов spawn оболочкой, которая печатает аргументы, отправленные вызову spawn.

вот функция обертки, поместите ее в верхнюю часть index.js или независимо от сценария запуска вашего сервера.

таким образом, вы можете легко узнать, какая команда фактически выполняется, а затем вы можете узнать, почему nodejs не может найти исполняемый файл для устранения проблемы.

Шаг 1: Обеспечить spawn называется правильно

запускает новый процесс с заданным command , с аргументами командной строки args . Если опустить, args по умолчанию пустой массив.

третий аргумент используется для указания дополнительных параметров, по умолчанию:

использовать env чтобы указать переменные среды, которые будут видны новому процессу, значение по умолчанию process.env .

убедитесь, что вы не вводите аргументы командной строки в command и все spawn вызов действителен. Переходите к следующему шагу.

Шаг 4: Обеспечить command существует в каталоге тех, которые определены в PATH

икра может испускать ENOENT ошибка, если имя файла command (i.e, 'some-command') не существует по крайней мере в одном из каталогов, определенных на PATH .

найдите точное место command . В большинстве дистрибутивов linux это можно сделать с терминала с помощью . Он сообщит вам абсолютный путь к исполняемому файлу (как указано выше) или скажет, если он не найден.

пример использования которого и его вывод, когда команда нашел

пример использования которого и его вывод, когда команда не найдено

miss-installed программы являются наиболее частой причиной для не нашел. при необходимости обратитесь к документации по каждой команде и установите ее.

когда команда представляет собой простой файл сценария, убедитесь, что он доступен из каталога на PATH . если это не так, либо переместить его в одну или сделать ссылку на него.

после определения PATH правильно установлен и command is доступный из него, вы должны иметь возможность порождать свой дочерний процесс без spawn ENOENT быть брошенным.

5f884cf6dc1b2410080017.jpg

Я пытаюсь подключить отладку для php в Visual Code с помощью XDebug, но выскакивает ошибка:

Я вроде уже всё сделал по гайдам из интернета, у меня стоит XAMMP, который уже имеет XDebug.dll, поэтому я дополнил php.ini так:

Настроил путь к php в настройках Visual Code:


Перезапустил VSCode и сервер в XAMPP и это не помогло, ошибка осталась. Все пути верные, пробовал с разными слэшами в пути, тоже не помогло.

Примечание автора : множество проблем с этой ошибкой побудило меня опубликовать этот вопрос для будущих ссылок.

Смежные вопросы:

В моем случае я передавал всю команду как строку, как вы, exec вместо того, чтобы передавать команду в качестве первого аргумента и параметры в качестве массива для второго аргумента. например, я делал spawn( "adb logcat -c" ) вместо spawn( "adb", [ "logcat", "-c" ] ) .

ПРИМЕЧАНИЕ. Эта ошибка почти всегда возникает из-за того, что команда не существует, потому что рабочий каталог не существует или из-за ошибки Windows.

Я нашел очень простой способ понять причину:

Я нашел очень простой способ определить, какая команда вызывает проблему, вместо добавления прослушивателей событий в вашем коде, как предложено в ответе @laconbass. Основная идея заключается в том, чтобы обернуть исходный вызов spawn оболочкой, которая печатает аргументы, отправленные вызову spawn.

Вот функция-обертка, поместите ее в начало index.js или любой другой сценарий запуска вашего сервера.

Таким образом, вы можете легко узнать, какая команда на самом деле выполняется, а затем вы можете узнать, почему nodejs не может найти исполняемый файл для решения проблемы.

Шаг 2: Определите эмиттер события, который испускает событие ошибки

поиск по исходному коду для каждого вызова spawn или child_process.spawn , т. е.

и прикрепите туда прослушиватель событий для события "ошибка", чтобы вы заметили точный эмиттер событий, который бросает его как "необработанный". После отладки этот обработчик можно удалить.

если первые две строки еще

сделать этот шаг снова, пока они не. вы должны определить прослушиватель, который выдает ошибку, прежде чем перейти к следующему шагу.

Шаг 3: убедитесь, что переменная окружения $PATH установлен

существует два возможных сценария:

  1. вы полагаетесь на значение по умолчанию spawn поведение, поэтому среда дочернего процесса будет такой же, как process.env .
  2. вы явно передав env объект spawn на options аргумент.

в обоих сценариях вы должны проверить PATH ключ на объекте среды, который будет использовать порожденный дочерний процесс.

пример для случая 1

пример для сценария 2

отсутствие PATH (то есть это undefined ) приведет к spawn для передачи ENOENT , так как невозможно будет найти command если это абсолютный путь к исполняемому файлу.

, когда PATH правильно установлен, перейдите к следующему шагу. это должен быть каталог, или список директорий. Последнее дело обычное.

Читайте также: