Requiring modules in Node.js: Everything you need to know
Keep reading for FREE
Every Module object gets an Id property to identify it. This Id is usually the full path to the file, but in a Repl session it’s simply Repl>. Node allows many ways to require a file (for example, with a relative path or a Pre-Configured path) before we can load the content of a file into the memory we need to find the absolute location of that file. If you create a local Node_Modules
Create a Find-Me folder under Node_Modules and place an Index.Js file in there. The same require ('Find-Me') line will use that folder’s Index.Js file. We can control what file name to start with under the folder using the main property in Package.Json.
If you want to only resolve the module and not execute it, you can use the
require.resolve function. This behaves exactly the same as the main
require function, but does not load the file. It will still throw an error if the file does not exist and it will return the full path to the file when found.
Besides resolving modules from within the
node_modules directories, we can also place the module anywhere we want and require it with either relative paths (
../ ) or with absolute paths starting with
Create a Lib/Util.Js file and add a Console.Log line there to identify it. Also, Console.Log the Module object itself. Do the same for an Index.Js file, which is what we’ll be executing with Node: NOTE how the main index Module (Id:' .') is now listed as the parent for the Lib/Util Module.
If you’ve noticed above, every time we’ve printed a Module object, it had an exports property which has been an empty object so far. So far, every time we printed a Module object, we saw a loaded attribute on that object with a value of false. The Module Module uses the loaded attribute to track which modules have been loaded (true value) and which modules are still being loaded (false value) we can, for example, see the Index.Js
Module1 requires Module2, and Module2 requires Module1 while it wasn’t fully loaded. A property was reported because both B and C were exported after Module2 required and printed Module1. Node keeps this really simple: during the loading of a Module, it builds the exports object.
If a file extension was not specified, the first thing Node will try to resolve is A.Js file. If it can’t find A.Json file, it will try A.Json file and it will Parse The.Json file if found as a Json text file. After that, it will try to find a Binary.Node file. To remove ambiguity,
Node wraps the Module code in a function, which we can inspect using the wrapper property of the Module Module. Exports is defined as a reference to Module.Exports prior to that. Require and Module are both specific to the function to be executed, and __Filename /_Dirname variables will contain the wrapped Module’s absolute Filename and directory path. This wrapper function has 5 arguments: exports, require, Module, __Filename,
Learning React or Node? Checkout my books:
reading habits, gather your
remember what you readand stay ahead of the crowd!
Save time with daily digests
No ads, all content is free
Save ideas & add your own
Get access to the mobile app
4.7 App Rating
MORE LIKE THIS