23 lines
		
	
	
	
		
			679 B
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			23 lines
		
	
	
	
		
			679 B
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| 
								 | 
							
								---
							 | 
						||
| 
								 | 
							
								tags:
							 | 
						||
| 
								 | 
							
								  - Programming_Languages
							 | 
						||
| 
								 | 
							
								  - backend
							 | 
						||
| 
								 | 
							
								  - node-js
							 | 
						||
| 
								 | 
							
								  - node-modules
							 | 
						||
| 
								 | 
							
								---
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## The Module Wrapper Function
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								When Node runs each of our module files are wrapped within an immediately-invoked function expression that has the following parameters:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								````js
							 | 
						||
| 
								 | 
							
								(function (exports, require, module, __filename, __dirname))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								````
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								This is called the **module wrapper function**
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Note that one of these parameters is the [module object](Modules.md#structure-of-a-module).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Within any module we can access these parameters: you can think of them as metadata about the module itself. `__filename` and `__dirname` are particularly useful when writing to files and modifying directories.
							 |