Open In App

Difference between Node require and ES6 import and export

Improve
Improve
Improve
Like Article
Like
Save Article
Save
Share
Report issue
Report

Node.js follows the commonJS module system, and it is required to include modules that exist in separate files and for that purpose, it has methods like “require” and “ES6 import and export” , available in Node. 

Require:

The built-in require function in Node facilitates the inclusion of modules from separate files, allowing the integration of core Node modules, community-based modules (node_modules), and local modules in a program. Primarily used for reading and executing JavaScript files, it returns the export object. Notable inbuilt modules include HTTP module, URL, query string, path, and others.

Syntax:

const express = require('express');
  • To include the local module is as follows. For an instance, you require ‘abc’ module, without specifying a path.
require('abc');

Example: Node will look for abc.js in all the paths specified by module.paths in order.

require('abc');

Output:

  • If node can’t find it: 
Error: Cannot find module 'abc'
at Function.Module._resolveFilename (module.js:470:15)
at Function.Module._load (module.js:418:25)
at Module.require (module.js:498:17)
at require (internal/module.js:20:19)
at repl:1:1
at ContextifyScript.Script.runInThisContext (vm.js:23:33)
at REPLServer.defaultEval (repl.js:336:29)
at bound (domain.js:280:14)
at REPLServer.runBound [as eval] (domain.js:293:12)
at REPLServer.onLine (repl.js:533:10)
  • If node find it: 
// It is the content of the file
Geeksforgeeks example for require

ES6 Import & Export:

ES6 Import and Export statements are used to refer to an ES module. Other file types can’t be imported with these statements. They are permitted only in ES modules and the specifier of this statement can either be a URL-style relative path or a package name. 

Whereas Export statements allow the user to export his created objects and methods to other programs. For instance, if you assign a string literal then it will expose that string literal as a module. 

Syntax:

  • For importing file.
// Importing submodule from 
// 'es-module-package/private-module.js';
import './private-module.js';
  • For exporting file.
module.exports = 'A Computer Science Portal';

Example: Create two JS file one is for importing and another one is for exporting or you can use any module to import so export one will not be required.

// Exporting module
module.exports = 'Hello Geek';
  • Import File name Display.js 

Javascript




// Importing module
var msg = import('./Message.js');
console.log(msg);


Output:

Hello Geek

Difference between node.js require and ES6 import and export:

Nodejs require ES6 import and export
Require is Non-lexical, it stays where they have put the file. Import is lexical, it gets sorted to the top of the file.
It can be called at any time and place in the program. It can’t be called conditionally, it always run in the beginning of the file.
You can directly run the code with require statement. To run a program containing import statement you have to use experimental module feature flag.
If you want to use require module then you have to save file with ‘.js’ extension. If you want to use import module then you have to save file with ‘.mjs’ extension.

NOTE: In Node.js, using both `require` and `import` concurrently is prohibited; it’s recommended to use `require` over `import` to avoid the experimental module flag requirement.



Last Updated : 14 Jan, 2024
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads