diff --git a/packages/eslint-plugin/src/rules/no-var-requires.ts b/packages/eslint-plugin/src/rules/no-var-requires.ts index b599d4cb87a..1bf51efe810 100644 --- a/packages/eslint-plugin/src/rules/no-var-requires.ts +++ b/packages/eslint-plugin/src/rules/no-var-requires.ts @@ -1,4 +1,5 @@ import { + ASTUtils, AST_NODE_TYPES, TSESTree, } from '@typescript-eslint/experimental-utils'; @@ -43,10 +44,14 @@ export default util.createRule({ AST_NODE_TYPES.VariableDeclarator, ].includes(parent.type) ) { - context.report({ - node, - messageId: 'noVarReqs', - }); + const variable = ASTUtils.findVariable(context.getScope(), 'require'); + + if (!variable?.identifiers.length) { + context.report({ + node, + messageId: 'noVarReqs', + }); + } } }, }; diff --git a/packages/eslint-plugin/tests/rules/no-var-requires.test.ts b/packages/eslint-plugin/tests/rules/no-var-requires.test.ts index 8c6ef638a16..1e38c482218 100644 --- a/packages/eslint-plugin/tests/rules/no-var-requires.test.ts +++ b/packages/eslint-plugin/tests/rules/no-var-requires.test.ts @@ -10,6 +10,11 @@ ruleTester.run('no-var-requires', rule, { "import foo = require('foo');", "require('foo');", "require?.('foo');", + ` +import { createRequire } from 'module'; +const require = createRequire('foo'); +const json = require('./some.json'); + `, ], invalid: [ {