I have a basic App created using npm init -y. In package.json I have a main entry which points to server.js.
{
  "name": "rest-api",
  "version": "1.0.0",
  "description": "",
  "main": "server.js",
  "private": true,
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "prestart": "SET NODE_ENV=dev"
}
I am trying to set the NODE_ENV variable in prestart and let npm to call main to invoke npm start. But environment variable set in the prestart is not carry forwarded and is undefined. When I run 'npm start', console outputs that both commands are executed in order.
    PS D:\test\RestAPI> npm start
    > rest-api@1.0.0 prestart D:\test\RestAPI
    > set NODE_ENV=dev
    > rest-api@1.0.0 start D:\test\RestAPI
    > node server.js
    undefined
    [undefined] Listening on http://localhost:3000
but when I print the variable from the app, it is undefined. Is there anything that I am doing wrong here, or is this how it is supposed to behave? Is there a way to invoke and set env variable using 'SET NODE_ENV=dev' without chaining it to 'node server.js'
When I combine both in the 'start' as below, then the environment variable is set.
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
     "start": "set NODE_ENV=dev && node server.js"
  }
I am testing this on Windows 10, npm version 3.10.10. Appreciate your help.
I know how this can be done in package.json using 'start'. This question is specific to how this can be achieved through 'prestart'.
Thanks.
 
    
 
    