These objects are global in nature and are available in all modules. There is no need to include these objects in our application, rather we can use them directly. These objects are modules, functions, strings, object etc.
Topics Covered :
- Console
- Process
- Scheduling Timers
- setImmediate(callback[, …args])
- setInterval(callback, delay[, …args])
- setTimeout(callback, delay[, …args])
- Cancelling Timers
- clearImmediate(immediateObject)
- clearInterval(intervalObject)
- clearTimeout(timeoutObject)
- Dirname : __dirname
- Filename : __filename
- Exports
- Module
- Require
Console
The console provides a simple debugging console. Used to print information on stdout and stderr. It uses built-in methods for printing informational, warning and error messages. It exports two specific components :
Console class : The class have methods like console.log(), console.error() and console.warn().
Global console instance: The instance is configured to write to process.stdout and process.stderr. The global console can be used without calling require(‘console’).
Example :
Create a file name text.js . Write the following code in text.js :
console.log('hello world');
// Prints hello world, to stdout
console.log('hello %s', 'world');
// Prints hello world, to stdout
console.error(new Error('Error'));
// Prints Error: 'Error', to stderr
const name = 'Global Objects';
console.warn(`Danger ${name}! Danger!`);
// Prints: Danger Global Objects! Danger!, to stderr
Run Command :
C:\Users\Your Name>node text.js
Result :
hello world
hello world
Error: Error
Danger Global Objects! Danger!
There are two ways of using a console synchronous and asynchronous. When the destination is a file or a terminal synchronous console is used. When the destination is a pipe asynchronous console is used.
S.no.
Method
Description
1.
console.assert(value[, message][,args …])
If the value is true, the error message is formatted using util.format() and used as the error message.
2.
newConsole(stdout[, stderr])
Creates a new Console.
3.
console.clear()
Checks whether stdout is a TTY if true will attempt to clear the TTY.
4.
console.count([label])
An internal counter has been called with the given label.
5.
console.countReset([label=’default’])
Resets the internal counter given to label.
6.
console.debug(data[, …args])
Alias for console.log().
7.
console.dir(obj[, options])
Uses util.inspect() on obj options alter certain aspects of the formatted string.
8.
console.dirxml(…data)
This method does not produce any XML formatting, it passes arguments to console.log().
9.
console.error([data][, …args])
Prints to stderr, the arguments are all passed to util.format().
10.
console.group([…label])
Increases indentation of subsequent lines.
11.
console.groupCollapsed()
Alias for console.group().
12.
console.groupEnd()
Decreases indentation of subsequent lines.
13.
console.info([data][, …args])
Alias for console.log().
14.
console.log([data][, …args])
Prints to stdout with newline.
15.
console.time(label)
Starts a timer.
16.
console.timeEnd(label)
Stops a timer that was previously started by calling console.time(). Prints the result to stdout.
17.
console.trace([message][, …args])
Prints to stderr the string. the util.format() formatted message and stack trace to the current position in the code.
18.
console.warn([data][, …args])
Alias for console.error().
Inspector only methods
These methods does not display anything unless used in the inspector.
S.no.
Method
Description
1.
console.profile([label])
Starts a JavaScript CPU profile with an optional label until console.profileEnd() is called.
2.
console.profileEnd()
Stops the current JavaScript CPU profiling session.
3.
console.table(array[, columns])
Prints to stdout the array formatted as a table.
Process
- Used to get information over the current process.
- Provides multiple events related to process activities.
Process Events
It is an instance of EventEmitter. It emits the following events :
S.No. | Event | Description |
1. | exit | Emitted when the Node.js process is about to exit as a result of either by the process.exit Code property, or the exitCode argument. |
2. | beforeExit | Emitted when Node.js empties its event loop and has no additional work to schedule and can make asynchronous calls. |
3. | disconnect | Event will be emitted when the IPC channel is closed. |
4. | message | Emitted whenever a message sent by a parent process using childprocess.send() is received by the child process. |
5. | uncaughtException | Emitted whenever a Promise has been rejected and an error handler was attached to it later than one turn of the event loop. |
6. | Signal Events | Emitted when the Node.js process receives a signal. |
7. | warning | Emitted whenever Node.js emits a process warning. |
8. | rejectionHandled | Emitted whenever a Promise has been rejected and an error handler was attached to it later than one turn of the event loop. |
9. | unhandledRejection | Emitted whenever a Promise is rejected and no error handler is attached to the promise within a turn of the event loop. |
Example :
Create a file name text.js . Write the following code in text.js :
process.on('exit', function(code) {
// The code below will never execute.
setTimeout(function() {
console.log("This will not run");
}, 0);
console.log('About to exit with code:', code);
});
console.log("Program Ended");
Run Command :
C:\Users\Your Name>node text.js
Result :
Program Ended
About to exit with code: 0
Process Properties
To better control system interactions, process properties are used :
S.No. | Property | Description |
1. | stdin | Writable Stream to stdin |
2. | stdout | Writable Stream to stdout. |
3. | stderr | Writable Stream to stderr |
4. | argv | returns an array containing the command line arguments passed (Arguments node and javascript file) |
5. | argv0 | stores a read-only copy of the original value of argv[0] |
6. | env | returns an object containing the user environment |
7. | execPath | returns the absolute pathname of the executable that started the Node.js process. |
8. | execArgv | returns the set of Node.js-specific command-line options passed |
9. | exitCode | Specifying a code to process.exit(code) will override any previous setting |
10. | config | returns an Object containing the JavaScript |
11. | pid | returns the PID of the process. |
12. | arch | returns a String identifying the processor architecture that the Node.js process is currently running on. |
Methods
S.No. | Method | Description |
1. | abort() | Emit a abort. It causes the node to exit and generate a core file. |
2. | cwd() | Returns the current working directory of the Node.js process. |
3. | exit([code]) | Method instructs Node.js to terminate the process synchronously. |
4. | chdir(directory) | Changes the current working directory of the Node.js process or throws an exception if doing so fails. |
5. | getegid() | Returns the numerical effective group identity of the Node.js process. |
6. | setegid(id) | Sets the effective group identity of the process. |
7. | geteuid() | Returns the numerical effective user identity of the process. |
8. | getgid() | Returns the numerical group identity of the process. |
9. | getuid() | Returns the numeric user identity of the process. |
10. | seteuid(id) | Sets the effective user identity of the process. |
11. | getgroups() | Returns an array with the supplementary group. |
12. | setgid() | sets the group identity of the process. |
13. | setuid() | sets the user identity of the process. |
Scheduling Timers
In Node.js a timer is a global function and an internal construct that calls a given function after a certain period of time. When a timer’s function is called it varies depending on which method was used to create the timer and what other work the Node.js event loop is doing.
setImmediate(callback[, …args])
callback : It is a callback function to call at the end of this turn of Event Loop
..args : Optional arguments to pass when the callback is called
- It sets the ‘immediate’ execution of the callback after I/O events callback returns an Immediate for clearImmediate().
- When there are multiple calls for setImmediate(), then the callback functions are queued for execution in the order in which they are created.
- For every event loop iteration, entire callback queue is processed.
- When an immediate timer is queued from inside an executing callback, then that timer will not be triggered until the next event loop iteration.
Example :
Create a file name text.js . Write the following code in text.js :
setImmediate(function () {
console.log('immediate');
});
Run Command :
C:\Users\Your Name>node text.js
The output is printed after a little delay.
The method has a custom variant for promises i.e. util.promisify() :Example :
Create a file name text.js . Write the following code in text.js :
const util = require('util');
const setImmediatePromise= util.promisify(setImmediate);
setImmediatePromise('aaa').then((value) => {
// value === 'aaa' (passing values is optional)
// This is executed after all I/O callbacks.
});
// or with async function
async function timerExample() {
console.log('Before I/O callbacks');
await setImmediatePromise();
console.log('After I/O callbacks');
}
timerExample();
Run Command :
C:\Users\Your Name>node text.js
Result :
Before I/O callbacks
After I/O callbacks
Note : Callback has to be a function otherwise TypeError will be thrown.
setInterval(callback, delay[, …args])
callback : It is a callback function to call when the timer pass.
delay : It is of type number. The number of milliseconds to wait before calling the callback.
..args : Optional arguments to pass when the callback is called.
Run callback repeatedly after at least delay of milliseconds. OS timer granularity and system load may affect actual delay. Returns a Timeout for use with clearInterval(). A timer cannot span larger than 2147483647 or less than 1, otherwise, the delay will be set to 1.
Example :
Create a file name text.js . Write the following code in text.js :
function printHello(){
console.log( "Hello, World!");
}
// Call the above function after 2 seconds
setInterval(printHello, 2000);
Run Command :
C:\Users\Your Name>node text.js
The output is printed after delay.
setTimeout(callback, delay[, …args])
callback : It is a callback function to call when the timer pass.
delay : It is of type number. The number of milliseconds to wait before calling the callback.
…args : Optional arguments to pass when the callback is called.
Executes a one-time callback after the delay of milliseconds. Returns a Timeout for clearTimeout(). A timer cannot span larger than 2147483647 or less than 1, otherwise, the delay will be set to 1.
Example :
Create a file name text.js . Write the following code in text.js :
function printHello(){
console.log( "Hello, World!");
}
//Call above function after 2 seconds
setTimeout(printHello, 2000);
Run Command :
C:\Users\Your Name>node text.js
The output is printed after a little delay.
The method has a custom variant for promises i.e. util.promisify() :Example :
Create a file name text.js . Write the following code in text.js :
const util = require('util');
const setTimeoutPromise = util.promisify(setTimeout);
setTimeoutPromise(40, 'foobar').then((value) => {
// value === 'foobar' (passing values is optional)
// This is executed after about 40 milliseconds.
console.log(value);
});
Run Command :
C:\Users\Your Name>node text.js
The output is printed after delay.
Note: Callback has to be a function otherwise TypeError will be thrown.
Cancelling Timers
The setImmediate(), setInterval() and setTimeout() methods return objects that represent the scheduled timers. Cancelling timers can be used to cancel the timer and stop triggering.
clearImmediate(immediateObject)
The clearTimeout(t) global function is used to stop a timer returned by the setImmediate() function.
Example :
Create a file name text.js . Write the following code in text.js :
function printHello(){
console.log( "Hello, World!");
}
// Call above function after 2 seconds
var t = setImmediate(printHello, 2000);
// Clear the timer
clearTimeout(t);
Run Command :
C:\Users\Your Name>node text.js
You will not find anything printed in the output.
clearInterval(intervalObject)
The clearTimeout(t) global function is used to stop a timer returned by the setInterval() function.
Example :
Create a file name text.js . Write the following code in text.js :
function printHello(){
console.log( "Hello, World!");
}
// Call above function after 2 seconds
var t = setInterval(printHello, 2000);
// Clear the timer
clearTimeout(t);
Run Command :
C:\Users\Your Name>node text.js
You will not find anything printed in the output.
clearTimeout(timeoutObject)
The clearTimeout(t) global function is used to stop a timer returned by the setTimeout() function.
Example :
Create a file name text.js . Write the following code in text.js :
function printHello(){
console.log( "Hello, World!");
}
// Call above function after 2 seconds
var t = setTimeout(printHello, 2000);
// Clear the timer
clearTimeout(t);
Run Command :
C:\Users\Your Name>node text.js
You will not find anything printed in the output.
The following variables exist only in the scope of modules, they may appear to be global but are not :
- __dirname
- __filename
- exports
- module
- require()
__dirname
The __dirname is same as the path.dirname() of the __filename. It is of type string. It specifies the directory name of the current module.
Example :
Create a file name test.js . Write the following code in test.js :
// Prints the value of __dirname
console.log( __dirname );
Run Command :
C:\Users\Your Name>node dirname.js
__filename
The __filename is the resolved absolute path of the current module. The value within a module is the path to that module file. It is of type string. It specifies the filename of the code being executed.
Example :
Create a file name test.js . Write the following code in test.js :
//Print the value of __filename
console.log( __filename );
Run Command :
C:\Users\Your Name>test.js
Exports
exports is a shortcut reference to the module.exports . It’s a variable available within the file-level scope of the module and assigned the value of module.exports before the module are appraised.
It allows a shortcut to the module.exports, so that module.exports.f = … can be written as exports.f = … . However, if a new value is assigned to exports it is no longer bound to the module.exports :
// Exported from require of module
module.exports.hello = true;
// Not exported, only available in the module
exports = { hello: false };
Module
The fundamental node building block is called a module which maps directly to a file. A module is of type object. The module free variable is a reference to the object representing the current module. a module is not actually a global but rather local to each module. The module Object free variable is a reference to the object representing the current module.
Built-in modules which you can use without any further installation :
Module | Description |
fs | To handle the file system. |
assert | Provides a set of assertion tests. |
buffer | To handle binary data. |
child_process | To run a child process. |
cluster | To split a single Node process into multiple processes. |
crypto | To handle OpenSSL cryptographic functions. |
dgram | Provides implementation of UDP datagram sockets. |
dns | To do DNS lookups and name resolution functions. |
events | To handle file paths. |
path | To handle the file system. |
http | To make Node.js act as an HTTP server. |
https | To make Node.js act as an HTTPS server. |
net | To create servers and clients. |
os | Provides information about the operation system. |
querystring | To handle URL query strings. |
readline | To handle readable streams one line at the time. |
stream | To handle streaming data. |
string_decoder | To decode buffer objects into strings. |
timers | To execute a function after a given number of milliseconds. |
tls | To implement TLS and SSL protocols. |
tty | Provides classes used by a text terminal. |
url | To parse URL strings. |
util | To access utility functions. |
vm | To compile JavaScript code in a virtual machine. |
zlib | To compress or decompress files. |
Require()
Require is used to load a module and its return value is typically assigned to a variable. It reads a javascript file, executes the file and then proceeds to return the exports object.
Syntax :
require(‘module_name’)
require.cache
Modules are cached in this object when they are required.
require.resolve(request[, options])
request: It is of type string. Contains the path of the module to resolve.
options: It is of type object. Contains path to resolve module location from.
require.resolve.paths(request)
request: It is of type string. Contains the module path whose lookup paths are being retrieved.
Learn More-