Узел имени узла не распознан как имя командлета функции файла сценария или исполняемой программы

Обновлено: 21.11.2024

Приложение NPM (Node Package Manager) — это менеджер пакетов для языка JavaScript, который позволяет устанавливать библиотеки или модули JavaScript с помощью команды npm install.

NPM поставляется вместе с NodeJS, поэтому каждый раз, когда вы устанавливаете определенную версию NodeJS на свой локальный компьютер, вместе с ней будет также устанавливаться определенная версия NPM.

Вы можете проверить текущую установленную версию NPM с помощью команды npm --version:

Но иногда вы можете столкнуться с ошибкой npm не распознан, как показано ниже:

Эта ошибка возникает, когда операционная система Windows не знает, что делать с командой npm.

Чтобы исправить ошибку, убедитесь, что исполняемый файл Node доступен в вашей переменной PATH.

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

Вы можете добавить новую запись в переменную среды Windows PATH с помощью командной строки следующим образом:

Или вы можете установить переменную PATH с помощью графического интерфейса Windows.

Следующие шаги помогут вам исправить ошибку из интерфейса Windows.

Исправление ошибки npm не распознается в ОС Windows

Сначала перейдите на «Мой компьютер» или «Этот компьютер» для Windows 10. Щелкните правой кнопкой мыши пустое место и откройте окно «Свойства»:

Нажмите «Дополнительные параметры системы» на левой панели окна «Свойства»:

Теперь вы находитесь в окне «Свойства системы». Щелкните Переменные среды. кнопка:

Теперь вы находитесь в окне переменных среды. Выберите переменную пути из таблицы «Пользовательские переменные» или «Системные переменные» и нажмите «Изменить». кнопка:

В конце значений переменных добавьте C:\Program Files\nodejs в качестве новой записи к переменной пути:

Если вы установили NodeJS в другом месте, вам нужно изменить запись на свое собственное местоположение. Не забывайте всегда вводить абсолютный путь от буквы диска до папки программы NodeJS.

После этого нажмите OK и откройте новое окно терминала или командной строки. Если вы вызываете npm из терминала VSCode, вам нужно сначала перезапустить VSCode, прежде чем пытаться снова.

Ошибка npm не распознана должна быть исправлена, и вы сможете проверить это с помощью команды npm --version:

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

Теперь вы сможете установить любой пакет NPM на свой локальный компьютер с помощью команды npm install. Отличная работа по исправлению ошибки!

См. также:

Повысьте уровень своих навыков программирования

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

сообщить об этом объявлении

О нас

Натан Себхастян – инженер-программист, который любит писать технические руководства. Изучайте JavaScript и другие концепции технологий веб-разработки с помощью простых для понимания объяснений, написанных простым английским языком.

Я установил Node.js и мог использовать его через Visual Studio Code еще несколько дней назад. Я пытался проверить версию, но получаю следующую ошибку:

Я проверил переменную PATH System и User Environments, и в обеих есть путь к node.js. Я также пытался удалить и переустановить Node.js (с последующим завершением работы и перезагрузкой). Пожалуйста, порекомендуйте. Спасибо.

Текст был успешно обновлен, но возникли следующие ошибки:

astevens009 прокомментировал 21 марта 2020 г.

В PowerShell (admin) я получаю следующий вывод:

Когда я запускаю команду "echo $env:path", я получаю длинную строку путей, но node.exe sin;t в строке.

ПРИМЕЧАНИЕ. Я пытался установить Node.js на внешний диск, потому что не хотел загружать диск C: своими проектами. Я приложил скриншот, показывающий, что nodejs установлен:

Прокомментировал Hakerh400 22 марта 2020 г.

Я проверил переменную PATH System и User Environments, и обе имеют путь к node.js

Когда я ввожу команду "echo $env:path", я получаю длинную строку путей, но node.exe sin;t в строке.

что противоречит вашему первому утверждению. Вам необходимо добавить папку, содержащую файл node.exe, в переменную среды PATH.

Кажется, я неправильно понял ваше предыдущее письмо. Я думал, вы спрашивали, является ли строка "node.exe» был указан в строке переменных среды после выполнения команды «echo $env:path» (это не так). Мне нужно заглянуть в папку nodejs, чтобы увидеть, есть ли там node.exe.

В воскресенье, 22 марта 2020 г., в 3:10 Томас ***@***.***> написал: Вы сказали, что я проверил системную переменную PATH и пользовательскую среду, и обе имеют путь к узлу .js, то вы сказали, что когда я запускаю команду «echo $ env: path», я возвращаю длинную строку путей, но node.exe sin; t в строке. что противоречит вашему первому утверждению. Вам нужно добавить папку, содержащую файл node.exe, в переменную среды PATH. — Вы получаете это, потому что вы создали тему. Ответьте на это письмо напрямую, просмотрите его на GitHub или отмените подписку.

astevens009 прокомментировал 24 марта 2020 г.

Обновление:
Мне удалось решить проблему (на данный момент :) ). Я удалил nodejs (версия 13.x.x) и переустановил его, используя версию 12.16.x. На данный момент, кажется, работает хорошо. Спасибо за помощь.

PoojaDurgad прокомментировала 1 октября 2020 г.

@astevens009 - что-то нерешено по этому вопросу?

В четверг, 1 октября 2020 г., в 3:47 PoojaDurgad ***@***.***> написал: @astevens009 - есть ли что-то нерешенное по этому вопросу? — Вы получаете это, потому что вас упомянули. Ответьте на это письмо напрямую, просмотрите его на GitHub или отмените подписку.

gireeshpunathil прокомментировал 5 октября 2020 г.

тогда закрываем, ура!

Прокомментировал Withvorgine 17 декабря 2021 г.

Я нажал "убить терминал" в коде vs, и это сработало.

Вы не можете выполнить это действие в данный момент.

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

В этой главе рассказывается о некоторых распространенных ошибках, которые могут возникнуть при использовании Amazon EKS, и о том, как их обойти.

Недостаточно мощности

Если вы получаете следующую ошибку при попытке создать кластер Amazon EKS, это означает, что в одной из указанных вами зон доступности недостаточно ресурсов для поддержки кластера.

Невозможно создать кластер «example-cluster», так как регион-1d, целевая зона доступности, в настоящее время не имеет достаточной емкости для поддержки кластера. Повторите попытку и выберите одну из следующих зон доступности: регион-1a, регион-1b, регион-1c

Повторите попытку создания кластера с подсетями в кластере VPC, которые размещены в зонах доступности, возвращаемых этим сообщением об ошибке.

Узлы не могут присоединиться к кластеру

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

В файле aws-auth-cm.yaml нет правильного ARN роли IAM для ваших узлов. Убедитесь, что ARN роли IAM узла (а не ARN профиля экземпляра) указан в вашем файле aws-auth-cm.yaml. Дополнительную информацию см. в разделе Запуск самоуправляемых узлов Amazon Linux.

Имя ClusterName в шаблоне AWS CloudFormation вашего узла не совсем соответствует имени кластера, к которому вы хотите, чтобы ваши узлы присоединились. Передача неверного значения в это поле приводит к неправильной конфигурации файла узла /var/lib/kubelet/kubeconfig, и узлы не присоединяются к кластеру.

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

Возможно, узлы не смогут получить доступ к кластеру с помощью общедоступного IP-адреса. Убедитесь, что узлам, развернутым в общедоступных подсетях, назначен общедоступный IP-адрес. Если нет, вы можете связать эластичный IP-адрес с узлом после его запуска. Дополнительные сведения см. в разделе Связывание эластичного IP-адреса с работающим экземпляром или сетевым интерфейсом. Если общедоступная подсеть не настроена на автоматическое назначение общедоступных IP-адресов развернутым в ней экземплярам, ​​рекомендуется включить этот параметр. Дополнительные сведения см. в разделе Изменение общедоступного атрибута адресации IPv4 для вашей подсети. Если узел развернут в частной подсети, то в этой подсети должен быть маршрут к шлюзу NAT, которому назначен общедоступный IP-адрес.

Конечная точка STS для региона AWS, в котором вы развертываете узлы, не включена для вашей учетной записи. Чтобы включить регион, см. раздел Активация и деактивация AWS STS в регионе AWS.

Неавторизованный доступ или доступ запрещен ( kubectl )

Если вы получаете одну из следующих ошибок при выполнении команд kubectl, ваш kubectl неправильно настроен для Amazon EKS или используемые вами учетные данные пользователя или роли IAM не сопоставляются с пользователем RBAC Kubernetes с достаточными разрешениями в вашем Кластер Amazon EKS.

не удалось получить токен: AccessDenied: Отказано в доступе

ошибка: вы должны войти на сервер (не авторизовано)

ошибка: сервер не имеет типа ресурса "svc"

Это может быть связано с тем, что кластер был создан с одним набором учетных данных AWS (от пользователя или роли IAM), а kubectl использует другой набор учетных данных.

При создании кластера Amazon EKS сущность IAM (пользователь или роль), которая создает кластер, добавляется в таблицу авторизации RBAC Kubernetes в качестве администратора (с разрешениями system:masters). Изначально только этот пользователь IAM может совершать вызовы к серверу API Kubernetes с помощью kubectl. Дополнительные сведения см. в разделе Включение доступа пользователей и ролей IAM к вашему кластеру. Если вы используете консоль для создания кластера, вы должны убедиться, что те же учетные данные пользователя IAM находятся в цепочке учетных данных AWS SDK, когда вы запускаете команды kubectl в своем кластере.

Если вы установили и настроили интерфейс командной строки AWS, вы можете настроить учетные данные IAM для своего пользователя. Дополнительную информацию см. в разделе «Настройка интерфейса командной строки AWS» в Руководстве пользователя интерфейса командной строки AWS.

Если вы взяли на себя роль для создания кластера Amazon EKS, вы должны убедиться, что kubectl настроен для использования той же роли. Используйте следующую команду, чтобы обновить файл kubeconfig для использования роли IAM. Дополнительные сведения см. в разделе Создание kubeconfig для Amazon EKS.

Чтобы сопоставить пользователя IAM с пользователем RBAC Kubernetes, см. раздел Включение доступа пользователей и ролей IAM к вашему кластеру.

aws-iam-authenticator Не найден

Если вы получаете сообщение об ошибке «aws-iam-authenticator»: исполняемый файл не найден в $PATH , ваш kubectl не настроен для работы с Amazon EKS. Дополнительные сведения см. в разделе Установка aws-iam-authenticator.

Aws-iam-authenticator не требуется, если у вас установлен AWS CLI версии 1.16.156 или выше.

имя хоста не совпадает

Версия Python вашей системы должна быть 2.7.9 или выше. В противном случае вы получите сообщение о том, что имя хоста не соответствует ошибкам при вызовах AWS CLI в Amazon EKS. Дополнительные сведения см. в разделе Что такое ошибки «имя хоста не соответствует»? в FAQ по запросам Python.

getsockopt: нет маршрута к хосту

Docker работает в диапазоне CIDR 172.17.0.0/16 в кластерах Amazon EKS. Мы рекомендуем, чтобы подсети VPC вашего кластера не пересекались с этим диапазоном. В противном случае вы получите следующую ошибку:

Ошибки группы управляемых узлов

Если вы получаете сообщение об ошибке «Экземплярам не удалось присоединиться к кластеру kubernetes» в Консоли управления AWS, убедитесь, что либо включен доступ к частной конечной точке кластера, либо правильно настроены блоки CIDR для доступа к общедоступной конечной точке. Дополнительные сведения см. в разделе Управление доступом к конечной точке кластера Amazon EKS.

Если в вашей группе управляемых узлов возникает проблема с работоспособностью оборудования, Amazon EKS возвращает сообщение об ошибке, помогающее диагностировать проблему. Эти проверки работоспособности не выявляют проблемы с программным обеспечением, поскольку они основаны на проверках работоспособности Amazon EC2. Следующие сообщения об ошибках и связанные с ними описания показаны ниже.

AccessDenied: Amazon EKS или одному или нескольким вашим управляемым узлам не удается пройти аутентификацию или авторизацию на вашем API-сервере кластера Kubernetes. Дополнительные сведения об устранении этой ошибки см. в разделе Исправление ошибок AccessDenied для групп управляемых узлов.

AmiIdNotFound: нам не удалось найти идентификатор AMI, связанный с вашим шаблоном запуска. Убедитесь, что AMI существует и используется совместно с вашей учетной записью.

AutoScalingGroupNotFound: нам не удалось найти группу Auto Scaling, связанную с группой управляемых узлов. Вы можете воссоздать группу Auto Scaling с теми же настройками для восстановления.

ClusterUnreachable: Amazon EKS или один или несколько ваших управляемых узлов не могут установить связь с API-сервером вашего кластера Kubernetes. Это может произойти при сбоях в работе сети или если серверы API превышают время обработки запросов.

Ec2SecurityGroupNotFound: не удалось найти группу безопасности кластера для кластера. Вы должны заново создать свой кластер.

Ec2SecurityGroupDeletionFailure: нам не удалось удалить группу безопасности удаленного доступа для вашей группы управляемых узлов. Удалите все зависимости от группы безопасности.

Ec2LaunchTemplateNotFound: нам не удалось найти шаблон запуска Amazon EC2 для вашей группы управляемых узлов. Для восстановления необходимо заново создать группу узлов.

Ec2LaunchTemplateVersionMismatch : версия шаблона запуска Amazon EC2 для вашей группы управляемых узлов не соответствует версии, созданной Amazon EKS. Возможно, вы сможете вернуться к версии, созданной Amazon EKS для восстановления.

IamInstanceProfileNotFound: нам не удалось найти профиль экземпляра IAM для вашей группы управляемых узлов. Вы можете воссоздать профиль экземпляра с теми же настройками для восстановления.

IamNodeRoleNotFound: нам не удалось найти роль IAM для вашей группы управляемых узлов. Вы можете воссоздать роль IAM с теми же настройками для восстановления.

AsgInstanceLaunchFailures: в вашей группе Auto Scaling возникают сбои при попытке запуска экземпляров.

NodeCreationFailure: ваши запущенные инстансы не могут зарегистрироваться в вашем кластере Amazon EKS. Распространенными причинами этого сбоя являются недостаточные разрешения роли IAM узла или отсутствие исходящего доступа в Интернет для узлов.Для правильной работы ваши узлы должны иметь доступ к Интернету с использованием общедоступного IP-адреса. Дополнительные сведения см. в разделе IP-адресация VPC. Ваши узлы также должны иметь порты, открытые для выхода в Интернет. Дополнительные сведения см. в разделе Рекомендации по группам безопасности Amazon EKS.

InstanceLimitExceeded: ваша учетная запись AWS больше не может запускать экземпляры указанного типа. Вы можете запросить увеличение лимита инстансов Amazon EC2 для восстановления.

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

InternalFailure : эти ошибки обычно вызваны проблемой на стороне сервера Amazon EKS.

Самой распространенной причиной ошибок AccessDenied при выполнении операций над группами управляемых узлов является отсутствие eks:node-manager ClusterRole или ClusterRoleBinding . Amazon EKS настраивает эти ресурсы в вашем кластере в рамках подключения к группам управляемых узлов, и они необходимы для управления группами узлов.

ClusterRole может меняться со временем, но она должна выглядеть так, как показано в следующем примере:

Привязка ClusterRoleBinding со временем может меняться, но она должна выглядеть примерно так, как показано в следующем примере:

Убедитесь, что ClusterRole eks:node-manager существует.

Если есть, сравните выходные данные с предыдущим примером ClusterRole.

Убедитесь, что eks:node-manager ClusterRoleBinding существует.

Если есть, сравните выходные данные с предыдущим примером ClusterRoleBinding.

Если вы определили отсутствующую или поврежденную ClusterRole или ClusterRoleBinding как причину ошибки AcessDenied при запросе операций группы управляемых узлов, вы можете восстановить их. Сохраните следующее содержимое в файл с именем eks-node-manager-role.yaml .

Повторите операцию группы узлов, чтобы проверить, устранена ли проблема.

Инструмент сбора журналов CNI

Подключаемый модуль Amazon VPC CNI для Kubernetes имеет собственный сценарий устранения неполадок, доступный на узлах по адресу /opt/cni/bin/aws-cni-support.sh . Сценарий можно использовать для сбора журналов диагностики для обращений в службу поддержки и устранения общих неполадок.

Используйте следующую команду для запуска скрипта на вашем узле:

Если сценарий отсутствует в этом месте, контейнер CNI не запустился. Вы можете вручную загрузить и запустить скрипт с помощью следующей команды:

Сценарий собирает следующую диагностическую информацию. Развернутая версия CNI может быть более ранней, чем версия скрипта.

Диагностическая информация собирается и хранится по адресу:

Сеть выполнения контейнера не готова

Вы можете получить ошибку "Сеть среды выполнения контейнера не готова" и ошибки авторизации, подобные следующим:

Ошибки, скорее всего, связаны с тем, что карта конфигурации AWS IAM Authenticator ( aws-auth ) не применяется к кластеру. Карта конфигурации предоставляет разрешения system:bootstrappers и system:nodes Kubernetes RBAC для регистрации узлов в кластере. Чтобы применить карту конфигурации к вашему кластеру, см. статью Применение aws-auth ConfigMap к вашему кластеру.

Аутентификатор не распознает ARN роли, если он включает путь, отличный от / , как в следующем примере:

При указании ARN роли в карте конфигурации, которая включает путь, отличный от / , этот путь необходимо удалить. Приведенный выше ARN должен быть указан следующим образом:

Тайм-аут рукопожатия TLS

Если узлу не удается установить соединение с конечной точкой общедоступного сервера API, может появиться сообщение об ошибке, подобное приведенному ниже.

Процесс kubelet будет постоянно перезапускаться и проверять конечную точку сервера API. Ошибка также может временно возникать во время любой процедуры, выполняющей непрерывное обновление кластера в плоскости управления, например при изменении конфигурации или обновлении версии.

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

InvalidClientTokenId

Если вы используете роли IAM для учетных записей служб для модуля или набора демонов, развернутых в кластере в китайском регионе AWS, и не задали переменную среды AWS_DEFAULT_REGION в спецификации, модуль или набор демонов могут получить следующую ошибку. :

Чтобы решить эту проблему, вам нужно добавить переменную среды AWS_DEFAULT_REGION в спецификацию вашего модуля или набора демонов, как показано в следующем примере спецификации модуля.

Срок действия сертификата веб-перехватчика допуска к VPC

Если срок действия сертификата, использованного для подписи веб-перехватчика допуска VPC, истекает, статус новых развертываний модулей Windows остается равным ContainerCreating .

Чтобы решить эту проблему, если у вас есть устаревшая поддержка Windows на плоскости данных, см. раздел Обновление сертификата веб-перехватчика допуска VPC.Если версия вашего кластера и платформы более поздняя, ​​чем версия, указанная в предварительных требованиях к поддержке Windows, мы рекомендуем вам удалить устаревшую поддержку Windows в плоскости данных и включить ее для плоскости управления. После этого вам не нужно будет управлять сертификатом веб-перехватчика. Дополнительные сведения см. в разделе Поддержка Windows.

Перед обновлением плоскости управления группы узлов должны совпадать с версией Kubernetes

Прежде чем вы обновите плоскость управления до новой версии Kubernetes, младшая версия управляемых узлов и узлов Fargate в вашем кластере должна совпадать с версией текущей версии вашей плоскости управления. API EKS update-cluster-version отклоняет запросы, пока вы не обновите все управляемые узлы EKS до текущей версии кластера. EKS предоставляет API для обновления управляемых узлов. Сведения об обновлении версий Kubernetes группы управляемых узлов см. в разделе Обновление группы управляемых узлов. Чтобы обновить версию узла Fargate, удалите модуль, представленный узлом, и повторно разверните модуль после обновления плоскости управления. Дополнительные сведения см. в разделе Обновление кластера.

При запуске многих узлов возникают ошибки Too Many Requests

Если вы запускаете несколько узлов одновременно, вы можете увидеть сообщение об ошибке, в котором говорится, что Waiter ClusterActive не удалось: слишком много запросов . Это может произойти из-за того, что плоскость управления перегружена вызовами descriptionCluster. Перегрузка приводит к регулированию, узлам не удается запустить скрипт начальной загрузки, а узлы вообще не могут присоединиться к кластеру.

Убедитесь, что вы устанавливаете значения для аргументов --apiserver-endpoint , --b64-cluster-ca и --dns-cluster-ip. При включении этих аргументов загрузочному сценарию не требуется выполнять вызов descriptionCluster, что помогает предотвратить перегрузку плоскости управления. Дополнительные сведения см. в разделе Указание AMI.

Обычно это означает, что вам необходимо глобально установить интерфейс командной строки Gulp на свой компьютер и убедиться, что npm добавлен к вашим переменным среды Path.

Глобально установить Gulp

После установки Node глобально установите Gulp CLI, запустив npm install -g gulp-cli в командной строке.

Примечание. Если вы используете старую версию Gulp, в которой глобально установлен пакет gulp, вам придется удалить его перед установкой интерфейса командной строки Gulp. Сначала запустите npm uninstall -g gulp.

Убедитесь, что npm добавлен к вашим переменным окружения Path

Если у вас глобально установлен Gulp, но по-прежнему возникает ошибка, убедитесь, что глобальный npm добавлен в ваш путь.

В Windows откройте меню "Пуск" и введите "среда", затем выберите "Редактировать системные переменные среды".

Должно появиться окно «Свойства системы». В окне нажмите «Переменные среды», затем в новом всплывающем окне в разделе «Пользовательские переменные для USERNAME» (где «USERNAME» — это ваше собственное имя пользователя) дважды щелкните или отредактируйте запись «Путь». /p>

Убедитесь, что в списке переменных среды есть запись C:\Users\ИМЯ ПОЛЬЗОВАТЕЛЯ\AppData\Roaming\npm . Если его нет, нажмите «Создать» и добавьте эту запись, а затем нажмите «ОК», чтобы сохранить ее.

После добавления вашего глобального каталога npm перезапустите CLI (интерфейс командной строки), и он должен работать.

Я готовлю курс, который научит вас создавать с нуля реальный адаптивный веб-сайт!

Подпишитесь, чтобы получать электронные письма о новых сообщениях и другую информацию. Отменить подписку в любое время.

Отказ от ответственности перед партнерами

Я участвую в различных партнерских программах, и мой контент содержит партнерские ссылки. Если вы покупаете по этим ссылкам, я могу получить комиссию от продавца бесплатно для вас. Это один из способов поддержать этот сайт!

Являясь партнером Amazon, я зарабатываю на соответствующих покупках. Я рекомендую только те продукты, которые знаю лично и считаю полезными для своих читателей.

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