@@ -199,28 +199,26 @@ NODE_MODULES_PATHS(START)
199
199
200
200
<!-- type=misc-->
201
201
202
- Modules are cached after the first time they are loaded. This means
203
- (among other things) that every call to ` require('foo') ` will get
204
- exactly the same object returned, if it would resolve to the same file.
202
+ Modules are cached after the first time they are loaded. This means (among other
203
+ things) that every call to ` require('foo') ` will get exactly the same object
204
+ returned, if it would resolve to the same file.
205
205
206
- Provided ` require.cache ` is not modified, multiple calls to
207
- ` require('foo') ` will not cause the module code to be executed multiple times.
208
- This is an important feature. With it, "partially done" objects can be returned,
209
- thus allowing transitive dependencies to be loaded even when they would cause
210
- cycles.
206
+ Provided ` require.cache ` is not modified, multiple calls to ` require('foo') `
207
+ will not cause the module code to be executed multiple times. This is an
208
+ important feature. With it, "partially done" objects can be returned, thus
209
+ allowing transitive dependencies to be loaded even when they would cause cycles.
211
210
212
- To have a module execute code multiple times, export a function, and call
213
- that function.
211
+ To have a module execute code multiple times, export a function, and call that
212
+ function.
214
213
215
214
### Module Caching Caveats
216
215
217
216
<!-- type=misc-->
218
217
219
- Modules are cached based on their resolved filename. Since modules may
220
- resolve to a different filename based on the location of the calling
221
- module (loading from ` node_modules ` folders), it is not a * guarantee*
222
- that ` require('foo') ` will always return the exact same object, if it
223
- would resolve to different files.
218
+ Modules are cached based on their resolved filename. Since modules may resolve
219
+ to a different filename based on the location of the calling module (loading
220
+ from ` node_modules ` folders), it is not a * guarantee* that ` require('foo') ` will
221
+ always return the exact same object, if it would resolve to different files.
224
222
225
223
Additionally, on case-insensitive file systems or operating systems, different
226
224
resolved filenames can point to the same file, but the cache will still treat
@@ -415,7 +413,7 @@ are not found elsewhere.
415
413
On Windows, ` NODE_PATH ` is delimited by semicolons (` ; ` ) instead of colons.
416
414
417
415
` NODE_PATH ` was originally created to support loading modules from
418
- varying paths before the current [ module resolution] [ ] algorithm was frozen .
416
+ varying paths before the current [ module resolution] [ ] algorithm was defined .
419
417
420
418
` NODE_PATH ` is still supported, but is less necessary now that the Node.js
421
419
ecosystem has settled on a convention for locating dependent modules.
@@ -588,6 +586,11 @@ value from this object, the next `require` will reload the module. Note that
588
586
this does not apply to [ native addons] [ ] , for which reloading will result in an
589
587
error.
590
588
589
+ Adding or replacing entries is also possible. This cache is checked before
590
+ native modules and if a name matching a native module is added to the cache,
591
+ no require call is
592
+ going to receive the native module anymore. Use with care!
593
+
591
594
#### require.extensions
592
595
<!-- YAML
593
596
added: v0.3.0
@@ -606,22 +609,13 @@ Process files with the extension `.sjs` as `.js`:
606
609
require .extensions [' .sjs' ] = require .extensions [' .js' ];
607
610
```
608
611
609
- ** Deprecated.** In the past, this list has been used to load
610
- non-JavaScript modules into Node.js by compiling them on-demand.
611
- However, in practice, there are much better ways to do this, such as
612
- loading modules via some other Node.js program, or compiling them to
613
- JavaScript ahead of time.
614
-
615
- Since the module system is locked, this feature will probably never go
616
- away. However, it may have subtle bugs and complexities that are best
617
- left untouched.
618
-
619
- Note that the number of file system operations that the module system
620
- has to perform in order to resolve a ` require(...) ` statement to a
621
- filename scales linearly with the number of registered extensions.
612
+ ** Deprecated.** In the past, this list has been used to load non-JavaScript
613
+ modules into Node.js by compiling them on-demand. However, in practice, there
614
+ are much better ways to do this, such as loading modules via some other Node.js
615
+ program, or compiling them to JavaScript ahead of time.
622
616
623
- In other words, adding extensions slows down the module loader and
624
- should be discouraged .
617
+ Avoid using ` require. extensions` . Use could cause subtle bugs and resolving the
618
+ extensions gets slower with each registered extension .
625
619
626
620
#### require.main
627
621
<!-- YAML
0 commit comments