跳至主要内容

禁止使用 var 导入 require

禁止使用 require 语句,除非在导入语句中。

换句话说,禁止使用 var foo = require("foo") 形式。请改用 ES6 风格的导入或 import foo = require("foo") 导入。

.eslintrc.cjs
module.exports = {
"rules": {
"@typescript-eslint/no-var-requires": "error"
}
};

在游乐场中尝试此规则 ↗

示例

var foo = require('foo');
const foo = require('foo');
let foo = require('foo');
在游乐场中打开

选项

此规则接受以下选项

type Options = [
{
/** Patterns of import paths to allow requiring from. */
allow?: string[];
},
];

const defaultOptions: Options = [{ allow: [] }];

allow

一个字符串数组。这些字符串将被编译成带有 u 标志的正则表达式,并用于测试导入的路径。一个常见的用例是允许导入 package.json。这是因为 package.json 通常位于 TS 根目录之外,因此静态导入它会导致根目录冲突,尤其是在启用 resolveJsonModule 的情况下。您也可以使用它来允许导入任何 JSON,如果您的环境不支持 JSON 模块,或者在 import 语句无法工作的情况下使用它。

使用 {allow: ['/package\\.json$']}

const foo = require('../data.json');
在游乐场中打开

何时不使用它

如果您的项目经常使用旧的 CommonJS require,那么此规则可能不适用于您。如果您的项目中只有一部分使用了 require,那么您可能需要考虑使用 ESLint 禁用注释 来处理这些特定情况,而不是完全禁用此规则。

资源