require()
should not be called as a constructor
- CALL_REQUIRE_AS_CONSTRUCTOR
- Error
- Medium
- nodejs
This rule applies when require()
is called as a constructor with new
operator.
When the instance creation code after loading the module is like new require('module').Module()
, it is evaluated as (new require('module')).Module()
.
This causes an unsuccessful instance creation because the new
operator does not apply for the constructor of the module.
In this case, explicit parentheses should be used like new (require('module').Module)()
.
Noncompliant Code Example
View with compliant examples side by sidevar moduleInstance = new require('module').Module(); // CALL_REQUIRE_AS_CONSTRUCTOR alarm because 'new' operator is not applied for the constructor 'Module()'.
Compliant Code Example
View with noncompliant examples side by sidevar moduleInstance = new (require('module').Module)();
Version
This rule was introduced in DeepScan 1.11.0-beta.