Node env не является внутренней или внешней командой исполняемой программой или пакетным файлом
Я нахожусь на машине с Windows 10, пытаясь запустить сценарий сборки из терминала git bash.
На моем оконечном узле распознается нормально, например я получаю версию при запуске node --version .
Но запуск сценария сборки не выполняется из-за следующей ошибки:
Я предполагаю, что мне нужно добавить что-то в мои переменные PATH, чтобы это работало, но что?
Не могли бы вы показать сценарий сборки, который пытаетесь запустить?
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно.
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей.
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то.
Ответы 4
Используйте пакет cross-env, который легко устанавливает переменные среды.
Шаг 1:
В вашем файле package.json (в этом примере вам нужно запустить команду 'start' с 'NODE_OPTIONS')
Шаг 2
Добавьте в скрипт cross-env, который вам нужно для запуска NODE_OPTIONS. (В данном случае сценарий start)
Для меня установка нижеупомянутого пакета решила проблему
Это не проблема PATH, NODE_OPTIONS является ПЕРЕМЕННОЙ ОКРУЖАЮЩЕЙ СРЕДЫ, которую необходимо установить перед запуском сборки. Чтобы установить переменную среды en в Windows 10, вам необходимо использовать команду set в терминальном режиме. См. Эту статью на форуме SUPERUSER, чтобы узнать больше.
В вашем случае просто добавьте set перед NODE_OPTIONS , и это решит вашу проблему.
Вот как интегрировать его в package.json:
Способ запуска как процесса узла, так и отладчика через F5 , который не требует борьбы с env vars.
I'm trying to setup an environment for a Node.js app. but I'm getting this error every time.
"NODE_ENV" is not recognized as an internal or external command, operable command or batch file.
What does this mean and how can I solve this problem?
I'm using Windows and also tried set NODE_ENV=development but had no luck.
24 Answers 24
I wrote a module for this: win-node-env.
It creates a NODE_ENV.cmd that sets the NODE_ENV environment variable and spawns a child process with the rest of the command and its args.
Just install it (globally), and run your npm script commands, it should automatically make them work.
@ivan-ivory The first variable (i.e. NODE_ENV) has to stay the same (otherwise it'll have to be an entirely separate script). And as for adding custom variables after it (i.e. NODE_ENV=dev SOME_VAR=val) I'll have to modify the logic of the script to parse more variables from process.argv. I've been thinking about it but don't have the time. Feel free to make a pull request.
Didn't work for me. I'm getting: > NODE_ENV=development node_modules/.bin/nodemon --ignore ./public/tones/ --exec babel-node server/index.js 'node_modules' is not recognized as an internal or external command, operable program or batch file.
It sounds like your error comes from an attempt to run something like this (which works in Linux)
the equivalent in Windows would be
running in the same command shell. You mentioned set NODE_ENV did not work, but wasn't clear how/when you executed it.
thanks Jim, i used it in command line and removed from package.json file. but i ran into another after that. looks like node modules are not fully supported by windows. got another error with bcrypt and gyp.
not a expert here, but bcrypt shows support for windows, but does require openSSL, not sure if that helps. If not, might want to post a new question since the scenario has changed a bit.
While this is indeed working, I think @Susan-stack gave the correct answer - a cross platform solution and not changing the line to work on windows but break other OS.
for windows use & in between command also. Like,
The command works but the value of NODE_ENV will be 'development ' (the white space between 't' and '&' will be contained by NODE_ENV )
exactly what @roroinpho21 says. now I have to .trim() the value later to make process.env.NODE_ENV == 'production' work. Anyway to avoid this in a oneliner?
People who couldn't make it work, "test-unit": "SET NODE_ENV=test & mocha --require co-mocha 'test.js'" wrong "test-unit": "SET NODE_ENV=test & mocha --require co-mocha test.js" true. You need to remove the ' ' around the js file.
This does exactly what you want if you're trying to run npm start to set the production mode to production.
This is actual a better answer than the accepted one. I didn't face any issues like the above comments :)
- npm install --save-dev "cross-env" module.
- modify the code as cross-env NODE_ENV=development node foo.js . Then you can run the like npm run build .
Use win-node-env, For using it just run below command on your cmd or power shell or git bash :
After it everything is like Linux.
I had the same problem and on windows platform and i just ran the below command
and everything works normally
Worked like a charm, needed this for a project where we are developing across multiple platforms (Mac and Windows).
will cause NODE_ENV to contain a space at the end:
As mentioned in a comment here, use this instead:
Changing your scripts to accommodate Windows is a royal pain. Trying to figure out the appropriate Windows translations and maintaining 2 sets of scripts is no way to live your life.
It's much easier to configure npm to use bash on Windows and your scripts will run as is.
Simply run npm config set script-shell "C:\\Program Files\\Git\\bin\\bash.exe" . Make sure the path to the bash executable is correct for your machine. You'll likely need to start a new instance of the terminal for the change to take effect.
Я пытаюсь настроить среду для приложения Node.js. но я получаю эту ошибку каждый раз.
«NODE_ENV» не распознается как внутренняя или внешняя команда, действующая команда или командный файл.
Что это значит и как решить эту проблему?
Я использую Windows и тоже пробовал set NODE_ENV=development , но безуспешно.
Похоже, ваша ошибка возникла из-за попытки запустить что-то вроде этого (что работает в Linux)
Эквивалент в Windows будет
Работает в той же командной оболочке. Вы упомянули, что набор NODE_ENV не работал, но не было ясно, как и когда вы его выполнили.
process.env.NODE_ENV добавляет пробел , сделайте это
установите сценарий test внутри файла package.json:
В Windows ; "test": "SET NODE_ENV = test & jest",
В Linux / Mac ; "test": "NODE_ENV = тестовая шутка",
Если кто-то еще пришел сюда, как я, пытаясь найти решение ошибки:
Причина, по которой я получил это, заключается в том, что я переносил решение angular с машины разработки Mac на рабочий стол с Windows 10. Вот как я это решил.
запустить npm install --save-dev cross-env
перейдите в мой файл package.json и измените все ссылки на скрипт с env на cross-env
Тогда мои команды вроде: npm run start:some_random_environment_var теперь нормально работают в Windows 10.
Для окон откройте git bash и попробуйте
NODE_ENV=production node app.js
Мне помогло NODE_ENV=production&& nodemon app/app.js
Обратите внимание на пространство. Удачи.
Для окон это можно сделать как
Работал на меня
Сделай это, это обязательно сработает
Для тех, кто использует Git Bash и испытывает проблемы с npm run ,
Просто установите npm для использования Git Bash для запуска скриптов
npm config set script-shell "C:\\Program Files\\git\\bin\\bash.exe" (измените путь в соответствии с вашей установкой)
Затем npm будет запускать сценарии с Git Bash, поэтому такие способы использования, как NODE_ENV= , будут работать правильно.
У меня была такая же проблема и на платформе Windows, и я просто выполнил следующую команду
И все работает нормально
Изменение ваших сценариев для соответствия Windows - настоящая головная боль. Пытаться найти подходящие переводы для Windows и поддерживать 2 набора скриптов - это не способ жить своей жизнью.
Намного проще настроить npm для использования bash в Windows, и ваши скрипты будут работать как есть.
Просто запустите npm config set script-shell "C:\\Program Files\\Git\\bin\\bash.exe" . Убедитесь, что путь к исполняемому файлу bash правильный для вашей машины. Скорее всего, вам потребуется запустить новый экземпляр терминала, чтобы изменения вступили в силу.
На снимке экрана ниже показано преимущество.
Приведет к тому, что NODE_ENV будет содержать пробел в конце:
Как упоминалось в комментарии здесь, используйте вместо этого:
Используйте win-node-env. Для его использования просто выполните команду ниже на своем cmd или power shell или git bash :
После этого все как в линуксе.
- npm install --save-dev "cross-env" модуль.
- измените код как cross-env NODE_ENV=development node foo.js . Затем вы можете запустить подобное npm run build .
Для окон также используйте & между командами. Как,
Я написал для этого модуль: win-node-env.
Он создает NODE_ENV.cmd , который устанавливает переменную среды NODE_ENV и порождает дочерний процесс с остальной частью команды и ее аргументами.
Просто установите его (глобально) и запустите свои команды сценария npm, он должен автоматически заставить их работать.
Я совершенно не знаком с nodejs. Я пытаюсь заставить nodejs работать в моем окне Windows 2008, чтобы установить Karma, которую я бы использовал для TDDing моего кода AngularJs. Пока я сделал следующие шаги
Пропустил ли я какой-нибудь важный шаг в этом процессе?
Редактировать
Я понял, что если я открою «Командную строку Nodejs» из программных файлов, то распознается npm. Как заставить его работать в обычной командной строке?
Редактировать
В конец переменной Путь в разделе «Пользовательская переменная» переменных среды в свойствах системы.
После этого снова откройте командную строку и введите
Это должно сработать.
А потом оттуда работает .
На днях я столкнулся с этой проблемой на своем компьютере с Windows 7. Проблема была не в моем пути, но мне пришлось использовать экранированные косые черты вместо обратных косых черт, например:
Я установил nodejs, следуя этому руководству по AngularJS. команда npm работала, когда я открывал новое окно cmd, но не в текущем.
Итак, исправление заключалось в том, чтобы закрыть и открыть новое окно cmd .
Если все в порядке. Я бы посоветовал проверить это на PATHEXT. Необходимо добавить CMD.
Я обновляю эту ветку новым ответом, потому что я нашел решение моей жалкой ситуации не менее чем через неделю .
Я должен был установить только: .BAT, и его изменение решило проблему. Интересно, почему никто об этом не поднял .
Надеюсь это поможет!
Я тоже столкнулся с этой проблемой. Оказывается, Windows не использует одинарные кавычки в командной строке. Виновником был один из моих скриптов npm. Я изменил одинарные кавычки на экранированные двойные кавычки:
Возможно, вы уже получили ответ, но это может помочь другим, так как недавно я столкнулся с той же проблемой, и вот что я сделал:
-
Предоставлен путь к PowerShell. Для меня путь был C: \ Windows \ System32 \ WindowsPowerShell \ v1.0
Затем я открыл командную строку с правами администратора и скопировал это
@powershell -NoProfile -ExecutionPolicy unrestricted -Command "iex ((новый объект net.webclient) .DownloadString ('https://chocolatey.org/install.ps1')) " && SET PATH =% PATH%;% ALLUSERSPROFILE% \ chocolatey \ bin
В командную строку.
- Затем choco install nodejs
- Перезагрузите и все заработало. Попробуйте открыть cmd без прав администратора и запустите npm -v Cheers.
Если вы получаете эту ошибку через учетную запись службы, например службу контроллера Visual Studio TFS Build или любую другую фоновую службу, убедитесь, что вы перезапустили службу после установки npm, поскольку новые параметры среды PATH не будут выбраны теми, которые уже работают. Я получал ту же ошибку через мою службу сборки, но у меня был установлен и запущен npm в консоли.
Была такая же проблема в 64-разрядной версии Windows 8.1.
Оказывается, у меня возникает эта проблема, если я запускаю cmd, набирая его в строке пути в верхней части окна папки
или
, когда я нажимаю правой кнопкой мыши в окне папки, а затем открываю командную строку из списка .
Когда я запускаю cmd с помощью Run или Just из исполняемого файла cmd.exe, он работает.
Если вы запустите загруженный файл и установите его, они автоматически настроятся для вашей системы.
Вам больше не нужны никакие другие конфигурации, теперь вы можете использовать команду npm где угодно.
«npm» не распознается как внутренняя или внешняя команда, работающая программа или командный файл.
Для пользователей Windows выполните следующие действия:
- Перейдите в Мой компьютер Свойства.
- Нажмите Расширенные настройки системы на левой панели окна.
- Теперь у вас есть окно свойств системы. Нажмите Дополнительно .
- Затем нажмите кнопку Переменная среды .
- Теперь у вас есть окно переменных среды: в системной переменной выберите Путь .
- Нажмите Изменить .
В конце значения переменной добавьте ;C:\Program Files\nodejs\
Примечание . Если вы установили nodejs на другие диски, действуйте соответственно.
Очень важное примечание : «Закройте командную строку и перезапустите снова» (Это очень важно, потому что, если вы не перезапустили командную строку, изменения не будут отражены.)
Теперь вы можете использовать команду npm где угодно
У меня была такая же проблема, описанная Ashu, но в дополнение к этому запись PATH для nodejs была завершена обратной косой чертой:
Мне также пришлось удалить эту последнюю обратную косую черту, чтобы она работала.
Не забудьте запустить cmd от имени администратора.
Если вы используете VS Code, закройте VS Code и откройте снова.
Я попытался закрыть Терминал, а затем открыть новый Терминал, но это не сработало.
Перезапуск VS Code работает!
Для пользователей Windows : картинка рассказывает тысячу слов.
Чтобы подробнее рассказать о ответе Брено. Для Windows 7 у меня сработали следующие шаги:
- Откройте панель управления (нажмите кнопку "Пуск", затем нажмите Панель управления ).
- Нажмите Учетные записи пользователей .
- Нажмите Изменить мои переменные среды .
- Выберите ПУТЬ и нажмите кнопку Изменить . .
- В конце значения переменной добавьте ;C:\Program Files\nodejs
- Нажмите ОК в окне «Редактировать переменную пользователя», затем нажмите ОК в окне «Переменные среды».
- Запустите окно командной строки (кнопка «Пуск», затем введите cmd в строку поиска и нажмите «Ввод»).
- В командной строке ( C:\> ) введите npm и нажмите Enter; теперь вы должны увидеть текст справки ( Usage: npm и т. д.), а не « npm не распознан . »
Не забудьте перезагрузить компьютер после установки узла! Это меня достало.
Для установленных узлов в другом месте просто добавьте «место установки» в переменные среды «PATH».
И перезапустите CMD или VSCode после этого.
Он должен работать.
В моем случае я установил узел по этому пути -> 'D: \ Program \ Node \ node_modules \ npm' -> просто измените его на место установки или местоположение по умолчанию 'C: \ Program Files \ nodejs'.
Я была такая же проблема. После установки узла просто перезагрузите компьютер. Это решило мою проблему.
Если вы начали использовать nvm для управления версиями узлов после установки узла в ваш компьютер, скорее всего, вы столкнетесь с той же проблемой.
Я установил версию 10.15.3 , а затем мне пришлось использовать другую версию, поскольку есть некоторая тесная зависимость с одним из моих проектов. Затем я решил установить nvm , при установке спросил, нужен ли мне nvm для управления версией, уже установленной на моем компьютере, а именно 10.15.3 . И да, я сказал «Да», надеясь, что он позаботится об этом, но, к сожалению, этого не произошло.
Я пытаюсь настроить среду для приложения Node.js. но я получаю эту ошибку каждый раз.
"NODE_ENV" is not recognized as an internal or external command, operable command or batch file.
Что это значит и как решить эту проблему?
Я использую Windows и тоже пробовал, set NODE_ENV=development но безуспешно .
Похоже, ваша ошибка возникла из-за попытки запустить что-то вроде этого (что работает в Linux)
эквивалент в Windows будет
работает в той же командной оболочке. Вы упомянули, что набор NODE_ENV не работал, но не было ясно, как и когда вы его выполнили.
спасибо, Джим, я использовал его в командной строке и удалил из файла package.json. но после этого я столкнулся с другим. похоже, что модули узлов не полностью поддерживаются окнами. получил еще одну ошибку с bcrypt и gyp. - krozero 13 авг.
здесь не эксперт, но bcrypt показывает поддержку окон, но требует openSSL, не уверен, что это поможет. Если нет, возможно, захочется опубликовать новый вопрос, поскольку сценарий немного изменился. - Jim O'Neil 14 авг.
Хотя это действительно работает, я думаю, что @ Susan-stack дал правильный ответ - кроссплатформенное решение и не меняет строку для работы в Windows, но нарушает работу других ОС. - justabuzz 03 июн.
Я написал для этого модуль: win-node-env .
Он создает объект, NODE_ENV.cmd который устанавливает NODE_ENV переменную среды и порождает дочерний процесс с остальной частью команды и ее аргументами.
Просто установите его (глобально) и запустите свои команды сценария npm, он должен автоматически заставить их работать.
@ ivan-ivory Первая переменная (например, NODE_ENV) должна оставаться неизменной (в противном случае это должен быть совершенно отдельный сценарий). А что касается добавления пользовательских переменных после него (например, NODE_ENV = dev SOME_VAR = val), мне придется изменить логику скрипта, чтобы проанализировать больше переменных из process.argv. Я думал об этом, но у меня нет времени. Не стесняйтесь сделать запрос на перенос. - laggingreflex 12 июн.
У меня не сработало. Я получаю:> NODE_ENV = development node_modules / .bin / nodemon --ignore ./public/tones/ --exec babel-node server / index.js 'node_modules' не распознается как внутренняя или внешняя команда, действующая программа или командный файл. - Rod Lima 22 марта '18 в 13:53
для окон также используйте & промежуточную команду. Нравиться,
Команда работает, но значением NODE_ENV будет 'development' (пробел между 't' и '&' будет содержать NODE_ENV ) - roroinpho21 23 июня '17 в 7:11
именно то, что говорит @ roroinpho21. теперь мне нужно .trim() значение, чтобы потом заработать process.env.NODE_ENV == 'production' . Как бы то ни было, чтобы избежать этого в одной строчке? - Flion 27 июля '17 в 11: 252017-07-27 11:25
Люди , которые не могли бы сделать его работу, "test-unit": "SET NODE_ENV=test & mocha --require co-mocha 'test.js'" не так "test-unit": "SET NODE_ENV=test & mocha --require co-mocha test.js" верно . Вам нужно удалить ' ' вокруг файла js. - Serhat Türkman 14 дек '18 в 13:15
Это делает именно то, что вы хотите, если вы пытаетесь запустить npm start, чтобы установить производственный режим на production. - Jason 01 фев '20 в 21:08
На самом деле это лучший ответ, чем принятый. У меня не было проблем, подобных приведенным выше комментариям :) - sanky 29 мая в 8:31
- npm install --save-dev "cross-env" модуль.
- измените код как cross-env NODE_ENV=development node foo.js . Потом можно запустить подобное npm run build .
Вероятно, это должен быть принятый ответ. Это решение, не зависящее от платформы - goonerify 12 мар в 9:04
Используйте win-node-env , для его использования просто выполните команду ниже на вашем cmd или power shell или git bash :
После этого все как в линуксе.
приведет к тому, что NODE_ENV будет содержать пробел в конце:
Как упоминалось в комментарии здесь , используйте вместо этого:
У меня была такая же проблема и на платформе Windows, и я просто выполнил следующую команду
и все работает нормально
Работал как шарм, это было необходимо для проекта, в котором мы разрабатываем на нескольких платформах (Mac и Windows). - Masoud Tahmasebi 4 ноя '20 в 10:51
Изменение сценариев для работы с Windows - настоящая головная боль. Пытаться найти подходящие переводы для Windows и поддерживать 2 набора скриптов - это не способ жить своей жизнью.
Намного проще настроить npm для использования bash в Windows, и ваши скрипты будут работать как есть.
Просто беги npm config set script-shell "C:\\Program Files\\Git\\bin\\bash.exe" . Убедитесь, что путь к исполняемому файлу bash правильный для вашей машины. Скорее всего, вам потребуется запустить новый экземпляр терминала, чтобы изменения вступили в силу.
Читайте также: