Обновлено: 11.02.2023
Сегодня я пытался установить зависимости в одном проекте на общем с другими разработчиками серваке. Использовал для установки зависимостей из 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 быть брошенным.
Я пытаюсь подключить отладку для 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 установлен
существует два возможных сценария:
- вы полагаетесь на значение по умолчанию spawn поведение, поэтому среда дочернего процесса будет такой же, как process.env .
- вы явно передав env объект spawn на options аргумент.
в обоих сценариях вы должны проверить PATH ключ на объекте среды, который будет использовать порожденный дочерний процесс.
пример для случая 1
пример для сценария 2
отсутствие PATH (то есть это undefined ) приведет к spawn для передачи ENOENT , так как невозможно будет найти command если это абсолютный путь к исполняемому файлу.
, когда PATH правильно установлен, перейдите к следующему шагу. это должен быть каталог, или список директорий. Последнее дело обычное.
Читайте также:
- Sublime text 3 ошибка package control
- Хотите включить загрузку по мобильной сети mortal kombat как исправить
- Как установить дьябло 2 от механиков
- Raid shadow legends ошибка aksoundengine dll
- Wasteland системные требования
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
Содержание
- Ошибка error spawn wine enoent wow
- Шаг 1: Обеспечить spawn называется правильно
- Шаг 4: Обеспечить command существует в каталоге тех, которые определены в PATH
- Шаг 2: Определите эмиттер события, который испускает событие ошибки
- Шаг 3: убедитесь, что переменная окружения $PATH установлен
- Как отладить «Ошибка: вызвать ENOENT» на node.js?
- Когда я получаю следующую ошибку:
- Какую процедуру я могу выполнить, чтобы исправить ее?
- ОТВЕТЫ
- Ответ 1
- Ответ 2
- Шаг 1: Убедитесь, что spawn называется правильным способом
- Шаг 2: Идентифицируйте событие, излучающее событие ошибки
- Шаг 3. Убедитесь, что переменная среды $PATH установлена
- Шаг 4: Убедитесь, что command существует в каталоге тех, которые определены в PATH
- Ответ 3
- Ответ 4
- Ответ 5
- Ответ 6
- Ответ 7
- Ответ 8
- Ответ 9
- Ответ 10
- Ответ 11
- Ответ 12
- Ответ 13
- Ответ 14
- Ответ 15
- Ответ 16
- Ответ 17
- Ответ 18
- Ответ 19
- Вы меняете опцию env ?
- Ответ 20
- Ответ 21
- Действия
Ошибка error spawn wine enoent wow
Сегодня я пытался установить зависимости в одном проекте на общем с другими разработчиками серваке. Использовал для установки зависимостей из 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
. Проблем возникнуть не должно. Ну лично у меня после очистки кэша всё сразу поставилось гладко.
Если вам этот совет помог, поделитесь ссылкой на решение со своими друзьями и коллегами!
Примечание автора: многие проблемы с этой ошибкой побудили меня опубликовать этот вопрос для будущих ссылок.
Я нашел особый простой способ получить представление о первопричине:
Я нашел очень простой способ определить, какая команда вызывает проблему, а не добавлять прослушиватели событий везде в вашем коде, как предложено в ответе @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 быть брошенным.
Я пытаюсь подключить отладку для 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 установлен
существует два возможных сценария:
- вы полагаетесь на значение по умолчанию spawn поведение, поэтому среда дочернего процесса будет такой же, как process.env .
- вы явно передав env объект spawn на options аргумент.
в обоих сценариях вы должны проверить PATH ключ на объекте среды, который будет использовать порожденный дочерний процесс.
пример для случая 1
пример для сценария 2
отсутствие PATH (то есть это undefined ) приведет к spawn для передачи ENOENT , так как невозможно будет найти command если это абсолютный путь к исполняемому файлу.
, когда PATH правильно установлен, перейдите к следующему шагу. это должен быть каталог, или список директорий. Последнее дело обычное.
Источник
Как отладить «Ошибка: вызвать ENOENT» на node.js?
Когда я получаю следующую ошибку:
Какую процедуру я могу выполнить, чтобы исправить ее?
Примечание автора.. Многие проблемы с этой ошибкой побудили меня опубликовать этот вопрос для будущих ссылок.
Связанные вопросы:
ОТВЕТЫ
Ответ 1
ПРИМЕЧАНИЕ. Эта ошибка почти всегда возникает из-за того, что команда не существует, потому что рабочий каталог не существует или из-за ошибки только для Windows.
Я нашел очень простой способ понять причину:
Проблема этой ошибки в том, что в сообщении об ошибке действительно мало информации, чтобы сказать вам, где находится сайт вызова, т.е. какой исполняемый файл/команда не найден, особенно если у вас большая кодовая база, где много вызовов спавна. С другой стороны, если мы знаем точную команду, которая вызывает ошибку, тогда мы можем следовать @laconbass ‘answer, чтобы решить проблему.
Я нашел очень простой способ определить, какая команда вызывает проблему, вместо добавления прослушивателей событий в вашем коде, как предложено в ответе @laconbass. Основная идея заключается в том, чтобы обернуть исходный вызов spawn оболочкой, которая печатает аргументы, отправленные на вызов spawn.
Вот функция-обертка, поместите ее в верхнюю часть index.js или любого другого сценария запуска вашего сервера.
Затем в следующий раз, когда вы запустите свое приложение, перед сообщением с неперехваченным исключением вы увидите что-то вроде этого:
Таким образом, вы можете легко узнать, какая команда на самом деле выполняется, а затем вы можете узнать, почему nodejs не может найти исполняемый файл для решения проблемы.
Ответ 2
Шаг 1: Убедитесь, что spawn называется правильным способом
Запускает новый процесс с заданным command с аргументами командной строки в args . Если опустить, args по умолчанию задает пустой массив.
Третий аргумент используется для указания дополнительных параметров, по умолчанию:
Используйте env , чтобы указать переменные среды, которые будут видимы для нового процесса, по умолчанию это process.env .
Убедитесь, что вы не вставляете аргументы командной строки в command , а весь spawn вызов действителен. Перейдите к следующему шагу.
Шаг 2: Идентифицируйте событие, излучающее событие ошибки
Найдите исходный код для каждого вызова spawn или child_process.spawn , т.е.
и прикрепите там прослушиватель событий для события «error», чтобы вы заметили точный Event Emitter, который бросает его как «Unhandled». После отладки этот обработчик можно удалить.
Выполните, и вы должны получить путь к файлу и номер строки, где был зарегистрирован ваш прослушиватель ошибок. Что-то вроде:
Если первые две строки все еще
сделайте этот шаг снова, пока они не станут. Вы должны идентифицировать слушателя, который испускает ошибку, прежде чем перейти к следующему шагу.
Шаг 3. Убедитесь, что переменная среды $PATH установлена
Возможны два сценария:
- Вы полагаетесь на поведение по умолчанию spawn , поэтому дочерняя среда процесса будет такой же, как process.env .
- Вы — экспликация, передающая объект env на spawn в аргументе options .
В обоих сценариях вы должны проверить ключ PATH на объекте среды, который будет использовать дочерний процесс, созданный.
Пример сценария 1
Пример сценария 2
Отсутствие PATH (т.е. it undefined ) приведет к тому, что spawn испустит ошибку ENOENT , так как не удастся найти какой-либо command , если только это абсолютный путь к исполняемому файлу.
Когда PATH установлен правильно, перейдите к следующему шагу. Это должен быть каталог или список каталогов. Последний случай является обычным.
Шаг 4: Убедитесь, что command существует в каталоге тех, которые определены в PATH
Spawn может испускать ошибку ENOENT , если имя файла command (т.е. ‘some-command’) не существует, по крайней мере, в одном из каталогов, определенных в PATH .
Найдите точное место command . В большинстве дистрибутивов Linux это можно сделать с терминала с помощью команды which . Он укажет вам абсолютный путь к исполняемому файлу (например, выше) или сообщите, не найден ли он.
Пример использования которого и его вывод, когда команда найдена
Пример использования которого и его вывод, когда команда не найдена
прошитые программы являются наиболее распространенной причиной для не найденной команды. Обратитесь к каждой документации команды, если необходимо, и установите ее.
Когда команда представляет собой простой файл script, убедитесь, что он доступен из каталога в PATH .. Если это не так, переместите его на один или создайте для него ссылку.
После того, как вы определили PATH правильно установленный и command доступен из него, вы сможете запустить дочерний процесс без spawn ENOENT .
Ответ 3
Как @DanielImfeld указал на него, ENOENT будет выброшен, если вы укажете «cwd» в параметрах, но данный каталог не существует.
Ответ 4
Решение для Windows: замените spawn на node-cross-spawn. Например, например, в начале вашего app.js:
Ответ 5
Ответ @laconbass помог мне и, вероятно, является наиболее правильным.
Я пришел сюда, потому что я использовал спавн неправильно. В качестве простого примера:
это правильно:
Тем не менее, я рекомендую сделать это следующим образом:
это потому, что тогда cp.on(‘exit’, fn) будет всегда cp.on(‘exit’, fn) , пока bash установлен, в противном случае cp.on(‘error’, fn) может cp.on(‘error’, fn) первым, если мы используем его Первый способ, если мы запустим ‘npm’ напрямую.
Ответ 6
например. замените spawn (‘npm’, [‘-v’], ) с помощью:
для всех node.js версия:
для node.js 5.x и более поздних версий:
Ответ 7
Для всех, кто может наткнуться на это, если все остальные ответы не помогут, и вы находитесь в Windows, знайте, что в настоящее время существует большая проблема с spawn в Windows и переменную среды PATHEXT , которая может привести к тому, что определенные вызовы на запуск не будут работать в зависимости от того, как установлена целевая команда.
Ответ 8
В моем случае я получил эту ошибку, вызванную из-за того, что необходимые зависимые системные ресурсы не были установлены.
В частности, у меня есть приложение NodeJS, которое использует ImageMagick. Несмотря на то, что установлен пакет npm, ядро Linux ImageMagick не было установлено. Я сделал apt-get для установки ImageMagick, и после этого все отлично поработало!
Ответ 9
Я столкнулся с той же проблемой, но нашел простой способ ее исправить. По-видимому, это ошибки spawn() , если программа была добавлена в PATH пользователем (например, работают обычные системные команды).
Чтобы исправить это, вы можете использовать модуль which ( npm install —save which ):
Ответ 10
Убедитесь, что установленный модуль установлен или полный путь к команде, если он не является модулем node
Ответ 11
Используйте require(‘child_process’).exec вместо spawn для более конкретного сообщения об ошибке!
Ответ 12
Я также проходил через эту досадную проблему, выполняя свои тестовые случаи, поэтому я попробовал много способов решить эту проблему. Но способ для меня — запустить ваш тестовый прогон из каталога, в котором находится ваш основной файл, который включает в себя функцию spawn для nodejs, примерно так:
Например, это имя файла test.js, поэтому просто перейдите в папку, в которой он находится. В моем случае это тестовая папка:
тогда от запуска вашего тестового бегуна в моем случае его мокко, так что это будет так:
Я потратил больше одного дня, чтобы понять это. Наслаждаться!!
Ответ 13
Я получал эту ошибку при попытке отладки программы node.js из редактора VS Code в системе Debian Linux. Я заметил, что в Windows все работает нормально. Решения, приведенные здесь ранее, не помогли, потому что я не написал никаких команд «икры». Оскорбительный код предположительно был написан Microsoft и скрыт под капотом программы VS Code.
Далее я заметил, что node.js называется node в Windows, но на Debian (и, предположительно, в системах на основе Debian, таких как Ubuntu), он называется nodejs. Поэтому я создал псевдоним — с корневого терминала, я побежал
и это решило проблему. Такая же или аналогичная процедура, по-видимому, будет работать в других случаях, когда ваш node.js называется nodejs, но вы запускаете программу, которая ожидает, что она будет называться node, или наоборот.
Ответ 14
У меня такая же ошибка для Windows 8. Проблема в том, что отсутствует переменная среды вашего системного пути. Добавьте значение «C:WindowsSystem32 » в переменную PATH вашей системы.
Ответ 15
Если вы работаете в Windows Node.js делает некоторые смешные дела при обработке котировок, которые могут привести к выдаче команды, которая, как вам известно, работает с консоли, но не выполняется при Node. Например, следующее должно работать:
но терпит неудачу. Там есть фантастически недокументированная опция windowsVerbatimArguments для обработки кавычек/подобных, которые, похоже, делают трюк, просто добавьте следующее к вашему объекту opts:
и ваша команда должна вернуться в бизнес.
Ответ 16
решение в моем случае
Ответ 17
npm install -g nodemon помог мне
Ответ 18
Я столкнулся с этой проблемой в Windows, где вызовы exec и spawn с одной и той же командой (без аргументов) работали нормально для exec (поэтому я знал, что моя команда была на $PATH ), но spawn будет дать ENOENT. Оказалось, что мне просто нужно добавить .exe к команде, которую я использовал:
Ответ 19
Вы меняете опцию env ?
Тогда посмотрите на этот ответ.
Я пытался порождать процесс узла и TIL, чтобы вы распространяли существующие переменные окружения при порождении, иначе вы потеряете переменную окружения PATH и, возможно, другие важные.
Это было исправление для меня:
Ответ 20
Если у вас возникла эта проблема с приложением, источник которого вы не можете изменить, подумайте о его вызове с переменной среды NODE_DEBUG , установленной в child_process , например, NODE_DEBUG=child_process yarn test . Это предоставит вам информацию о том, какие командные строки были вызваны в каком каталоге и, как правило, последняя деталь является причиной сбоя.
Ответ 21
Добавьте C:WindowsSystem32 в переменную среды path .
Действия
Перейдите на мой компьютер и свойства
Нажмите «Дополнительные настройки»
Затем в переменных среды
Выберите path , а затем нажмите на ссылку
Вставьте следующие, если они еще не присутствуют: C:WindowsSystem32
Закройте командную строку
Запустите команду, которую вы хотите запустить
Источник
Шаг 1: Убедитесь
spawnназывается правильново-первых, рассмотреть docs for child_process.spawn (command, args, options ):
запускает новый процесс с заданным
command, с аргументами командной строкиargs. Если опущено,argsпо умолчанию пустой массив.третий аргумент используется для указания дополнительных параметров, которые по умолчанию:
{ cwd: undefined, env: process.env }использовать
envчтобы указать переменные среды, которые будут видны новому процессу, значение по умолчаниюprocess.env.убедитесь, что вы не помещаете аргументы командной строки в
commandи всеspawnвызов действителен. Переходим к следующему шагу.Шаг 2: Определите источник событий, который выдает событие ошибки
поиск по исходному коду для каждого вызова
spawnилиchild_process.spawn, то естьspawn('some-command', [ '--help' ]);и прикрепите там прослушиватель событий для события «error», чтобы вы заметили точный эмиттер событий, который бросает его как «необработанный». После отладки этот обработчик может быть удален.
spawn('some-command', [ '--help' ]) .on('error', function( err ){ throw err }) ;выполнить и вы должны получить путь к файлу и номер строки, где ошибка ваш слушатель был зарегистрирован. Что-то вроде:
/file/that/registers/the/error/listener.js:29 throw err; ^ Error: spawn ENOENT at errnoException (child_process.js:1000:11) at Process.ChildProcess._handle.onexit (child_process.js:791:34)если первые две строки еще
events.js:72 throw er; // Unhandled 'error' eventсделать этот шаг снова, пока они не. вы должны определить прослушиватель, который выдает ошибку, прежде чем перейти к следующему шагу.
Шаг 3: убедитесь, что переменная окружения
$PATHустановленесть два возможных сценария:
- вы полагаетесь на значение по умолчанию
spawnповедение, поэтому среда дочернего процесса будет такой же, какprocess.env.- вы явно передаете
envобъектspawnнаoptionsаргумент.в обоих случаях необходимо проверить
PATHключ на объекте среды, который будет использовать порожденный дочерний процесс.пример для случая 1
// inspect the PATH key on process.env console.log( process.env.PATH ); spawn('some-command', ['--help']);пример для сценария 2
var env = getEnvKeyValuePairsSomeHow(); // inspect the PATH key on the env object console.log( env.PATH ); spawn('some-command', ['--help'], { env: env });отсутствие
PATH(т. е. этоundefined) приведет кspawnдля передачиENOENT, так как это не будет возможно найти любойcommandесли это абсолютный путь к исполняемому файлу., когда
PATHправильно установлен, перейдите к следующему шагу. это должен быть каталог, или список директорий. Последний случай-обычный.Шаг 4: Обеспечить
commandсуществует в каталоге тех, которые определены вPATH
икра может испускать
ENOENTошибка, если имя файлаcommand(т. е. ‘some-command’) не существует по крайней мере в одном из каталогов, определенных наPATH.найдите точное место
command. В большинстве дистрибутивов linux это можно сделать с помощью терминала с . Он сообщит вам абсолютный путь к исполняемому файлу (как показано выше), или сказать, если он не найден.пример использования которого и его вывод, когда команда нашел
> which some-command some-command is /usr/bin/some-commandпример использования которого и его вывод, когда команда не нашел
> which some-command bash: type: some-command: not foundМисс-установленные программы являются наиболее распространенной причиной для не нашел. при необходимости обратитесь к документации по каждой команде и установите ее.
когда команда представляет собой простой файл сценария, убедитесь, что он доступен из каталога на
PATH. если это не так, либо переместить его в одну или сделать ссылку на него.как только вы определяете
PATHправильно установлен иcommandis доступный из него, вы должны быть в состоянии породить свой детский процесс безspawn ENOENTбыть брошенным.
Шаг 1: Убедитесь, что spawn называется правильным способом
Сначала просмотрите docs для child_process.spawn(команда, args, options):
Запускает новый процесс с заданным
commandс аргументами командной строки вargs. Если опустить,argsпо умолчанию задает пустой массив.Третий аргумент используется для указания дополнительных параметров, по умолчанию:
{ cwd: undefined, env: process.env }Используйте
env, чтобы указать переменные среды, которые будут видимы для нового процесса, по умолчанию этоprocess.env.
Убедитесь, что вы не вставляете аргументы командной строки в command, а весь spawn вызов действителен. Перейдите к следующему шагу.
Шаг 2: Идентифицируйте событие, излучающее событие ошибки
Найдите исходный код для каждого вызова spawn или child_process.spawn, т.е.
spawn('some-command', [ '--help' ]);
и прикрепите там прослушиватель событий для события «error», чтобы вы заметили точный Event Emitter, который бросает его как «Unhandled». После отладки этот обработчик можно удалить.
spawn('some-command', [ '--help' ])
.on('error', function( err ){ throw err })
;
Выполните, и вы должны получить путь к файлу и номер строки, где был зарегистрирован ваш прослушиватель ошибок. Что-то вроде:
/file/that/registers/the/error/listener.js:29
throw err;
^
Error: spawn ENOENT
at errnoException (child_process.js:1000:11)
at Process.ChildProcess._handle.onexit (child_process.js:791:34)
Если первые две строки все еще
events.js:72
throw er; // Unhandled 'error' event
сделайте этот шаг снова, пока они не станут. Вы должны идентифицировать слушателя, который испускает ошибку, прежде чем перейти к следующему шагу.
Шаг 3. Убедитесь, что переменная среды $PATH установлена
Возможны два сценария:
- Вы полагаетесь на поведение по умолчанию
spawn, поэтому дочерняя среда процесса будет такой же, какprocess.env. - Вы — экспликация, передающая объект
envнаspawnв аргументеoptions.
В обоих сценариях вы должны проверить ключ PATH на объекте среды, который будет использовать дочерний процесс, созданный.
Пример сценария 1
// inspect the PATH key on process.env
console.log( process.env.PATH );
spawn('some-command', ['--help']);
Пример сценария 2
var env = getEnvKeyValuePairsSomeHow();
// inspect the PATH key on the env object
console.log( env.PATH );
spawn('some-command', ['--help'], { env: env });
Отсутствие PATH (т.е. it undefined) приведет к тому, что spawn испустит ошибку ENOENT, так как не удастся найти какой-либо command, если только это абсолютный путь к исполняемому файлу.
Когда PATH установлен правильно, перейдите к следующему шагу. Это должен быть каталог или список каталогов. Последний случай является обычным.
Шаг 4: Убедитесь, что command существует в каталоге тех, которые определены в PATH
Spawn может испускать ошибку ENOENT, если имя файла command (т.е. ‘some-command’) не существует, по крайней мере, в одном из каталогов, определенных в PATH.
Найдите точное место command. В большинстве дистрибутивов Linux это можно сделать с терминала с помощью команды which. Он укажет вам абсолютный путь к исполняемому файлу (например, выше) или сообщите, не найден ли он.
Пример использования которого и его вывод, когда команда найдена
> which some-command
some-command is /usr/bin/some-command
Пример использования которого и его вывод, когда команда не найдена
> which some-command
bash: type: some-command: not found
прошитые программы являются наиболее распространенной причиной для не найденной команды. Обратитесь к каждой документации команды, если необходимо, и установите ее.
Когда команда представляет собой простой файл script, убедитесь, что он доступен из каталога в PATH.. Если это не так, переместите его на один или создайте для него ссылку.
После того, как вы определили PATH правильно установленный и command доступен из него, вы сможете запустить дочерний процесс без spawn ENOENT.


