"NODE_ENV" is not recognized as an internal or external command, operable command or batch file
Windowsnode.jsWindows Problem Overview
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.
Windows Solutions
Solution 1 - Windows
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.
npm install -g win-node-env
Solution 2 - Windows
It sounds like your error comes from an attempt to run something like this (which works in Linux)
NODE_ENV=development node foo.js
the equivalent in Windows would be
SET NODE_ENV=development
node foo.js
running in the same command shell. You mentioned set NODE_ENV did not work, but wasn't clear how/when you executed it.
Solution 3 - Windows
for windows use &
in between command also. Like,
"scripts": {
"start": "SET NODE_ENV=development & nodemon app/app.js",
}
Solution 4 - Windows
npm install --save-dev "cross-env"
module.- modify the code as
cross-env NODE_ENV=development node foo.js
. Then you can run the likenpm run build
.
Solution 5 - Windows
Use win-node-env, For using it just run below command on your cmd
or power shell
or git bash
:
npm install -g win-node-env
After it everything is like Linux.
Solution 6 - Windows
I had the same problem and on windows platform and i just ran the below command
npm install -g win-node-env
and everything works normally
Solution 7 - Windows
set NODE_ENV=production & nodemon app/app.js
will cause NODE_ENV to contain a space at the end:
process.env.NODE_ENV == 'production'; //false
process.env.NODE_ENV == 'production '; //true
As mentioned in a comment here, use this instead:
NODE_ENV=production&& nodemon app/app.js
Solution 8 - Windows
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.
The screenshot below illustrates the benefit.
- npm ERR! when trying to run script initially.
- Script modified for Windows use runs but doesn't show the return message.
- After updating npm config to use bash, the script runs and returns the appropriate message.
Solution 9 - Windows
For those who uses Git Bash and having issues with npm run <script>
,
Just set npm to use Git Bash to run scripts
npm config set script-shell "C:\\Program Files\\git\\bin\\bash.exe"
(change the path according to your installation)
And then npm will run scripts with Git Bash, so such usages like NODE_ENV=
will work properly.
Solution 10 - Windows
This worked for me since it's an easy fix. I cloned a repository which was developed in WINDOWS but I am using MACOS.
If you are using windows use SET as prefix:
"scripts": {
"dev": "SET NODE_ENV=development && nodemon index.js",
},
But if you are using MacOS remove the SET keyword and use :
"scripts": {
"dev": "NODE_ENV=development && nodemon index.js",
},
So in a nutshell
if you are using windows use SET prefix before your run scripts and remove SET from MacOS (probably LINUX also) as shown above.
Solution 11 - Windows
Do this it will definitely work
"scripts": {
"start": "SET NODE_ENV=production && node server"
}
Solution 12 - Windows
NODE_ENV=development & node [your file name here]
or
SET NODE_ENV=development & node [your file name here]
Solution 13 - Windows
npm install -S cross-env
Worked for me
Solution 14 - Windows
For windows open git bash and try
NODE_ENV=production node app.js
Solution 15 - Windows
If anyone else came here like me trying to find a solution for the error:
'env' is not recognized as an internal or external command
The reason I got this is that I was migrating an angular solution from a mac development machine over to a windows 10 desktop. This is how I resolved it.
-
run
npm install --save-dev cross-env
-
go into my package.json file and change all the script references from
env <whatever>
tocross-env <whatever>
Then my commands like: npm run start:some_random_environment_var
now run fine on Windows 10.
Solution 16 - Windows
For windows you can do it like
"scripts": {
"start:prod" : "SET NODE_ENV=production & nodemon app.js",
"start:dev" : "SET NODE_ENV=development & nodemon app.js"
},
Solution 17 - Windows
Most of the answers up there didn't help me..
What helped me was NODE_ENV=production&& nodemon app/app.js
Take note of the space. Good luck.
Solution 18 - Windows
set the script "test" inside the "package.json" file :
FOR EXAMPLE:
In Windows; "test": "SET NODE_ENV=test & jest",
In Linux/Mac; "test": "NODE_ENV=test jest",
Solution 19 - Windows
You can solve this if you're using "Yarn Packager" by the following command:
yarn global add win-node-env
Solution 20 - Windows
> "set NODE_ENV=production&& nodemon server.js"
this one works for me.
Solution 21 - Windows
process.env.NODE_ENV is adding a white space do this
process.env.NODE_ENV.trim() == 'production'
Solution 22 - Windows
below code for windows
"start": "SET NODE_ENV=development & nodemon app.js",
"prod": "SET NODE_ENV=production & node app.js"
Solution 23 - Windows
On a windows platform
> ($env:NODE_ENV="environmentName") -and (node file.js)
Kill the terminal( Ctrl + C) then run the file
> node file.js
Solution 24 - Windows
If you are using Powershell as your terminal by any chance, try Using Git-Bash for the same.
NODE_ENV=development node foo.js
Solution 25 - Windows
On Windows machine npm install -g win-node-env