41 lines
		
	
	
		
			No EOL
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			No EOL
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
---
 | 
						|
tags:
 | 
						|
  - Programming_Languages
 | 
						|
  - backend
 | 
						|
  - node-js
 | 
						|
---
 | 
						|
# Environments 
 | 
						|
 | 
						|
With a full-scale Node application you will typically run three environments:
 | 
						|
* Development
 | 
						|
* Testing
 | 
						|
* Production
 | 
						|
 | 
						|
### Accessing current Node environment
 | 
						|
 We can control which processes run in a particular environment via the Node envrionment variables: `process.env` (see for instance [ports](./Ports.md)).
 | 
						|
 | 
						|
To determine the current environment we can use the variable `process.env.NODE_ENV`. This works globally regardless of the kind of Node app we are building. In Express, there is a built in method for retrieving the current envrionment: `app.get('env')`. 
 | 
						|
 | 
						|
If you haven't manually set up your environments Node will return `undefined` but express defaults to `development`. 
 | 
						|
 | 
						|
```js
 | 
						|
 | 
						|
console.log(process.env.NODE_ENV); // undefined
 | 
						|
console.log(app.get("env")); // development
 | 
						|
 | 
						|
```
 | 
						|
 | 
						|
Here is an example of setting middleware to run only in the specified environment:
 | 
						|
 | 
						|
```js
 | 
						|
if (app.get("env") === 'development') {
 | 
						|
  app.use(morgan("common"));
 | 
						|
  console.log('Morgan enabled')
 | 
						|
}
 | 
						|
```
 | 
						|
### Setting the current environment
 | 
						|
We could test that the previous code block works by switching the environment to production. We would do this by setting the environment variable in the terminal:
 | 
						|
 | 
						|
```
 | 
						|
export NODE_ENV=production
 | 
						|
``` |