Disallow Node.js modules (no-restricted-modules)

禁止 Node.js 模块 (no-restricted-modules)

A module in Node.js is a simple or complex functionality organized in a JavaScript file which can be reused throughout the Node.js application. The keyword require is used in Node.js/CommonJS to import modules into an application. This way you can have dynamic loading where the loaded module name isn’t predefined /static, or where you conditionally load a module only if it’s “truly required”.

Node.js 中的模块是一个在 JavaScript 文件中组织的简单或复杂的功能,可以在 Node.js 中复用的应用。Node.js/CommonJS 中的关键字 require 用来导入模块到应用中。这样,你就可以有动态加载,其中加载的模块名称不是预定义的/静态的,或者只有在真正需要的情况下才有条件地加载模块。

Why would you want to restrict a module?


Disallowing usage of specific Node.js modules can be useful if you want to limit the available methods a developer can use. For example, you can block usage of the fs module if you want to disallow file system access.

如果你想限制开发人员可以使用的方法,禁用特定的 Node.js 模块的使用可能非常有用。例如,如果你想禁止文件系统访问,你可以阻塞 fs 模块的使用。

Rule Details

This rule allows you to specify modules that you don’t want to use in your application.



The rule takes one or more strings as options: the names of restricted modules.


"no-restricted-modules": ["error", "foo-module", "bar-module"]

It can also take an object with lists of paths and gitignore-style patterns strings.

它还可以有一个对象,带有 paths 和 gitignore 风格的 patterns 字符串列表。

"no-restricted-modules": ["error", { "paths": ["foo-module", "bar-module"] }]
"no-restricted-modules": ["error", {
    "paths": ["foo-module", "bar-module"],
    "patterns": ["foo-module/private/*", "bar-module/*","!baz-module/good"]

You may also specify a custom message for any paths you want to restrict as follows:


"no-restricted-modules": ["error", [{
  "name": "foo-module",
  "message": "Please use bar-module instead."

or like this:


"no-restricted-modules": ["error",{
  "name": "foo-module",
  "message": "Please use bar-module instead."

The custom message will be appended to the default error message. Please note that you may not specify custom error messages for restricted patterns as a particular module may match more than one pattern.


To restrict the use of all Node.js core modules (via https://github.com/nodejs/node/tree/master/lib):

限制所有 Node.js 核心模块(通过 https://github.com/nodejs/node/tree/master/lib) 的使用:

    "no-restricted-modules": ["error",


Examples of incorrect code for this rule with sample "fs", "cluster","loadash" restricted modules:

限制 "fs", "cluster","loadash" 模块的 错误 代码示例:

/*eslint no-restricted-modules: ["error", "fs", "cluster"]*/

var fs = require('fs');
var cluster = require('cluster');
/*eslint no-restricted-modules: ["error", {"paths": ["cluster"] }]*/

var cluster = require('cluster');
/*eslint no-restricted-modules: ["error", { "patterns": ["lodash/*"] }]*/

var pick = require('lodash/pick');

Examples of correct code for this rule with sample "fs", "cluster","loadash" restricted modules:

限制 "fs", "cluster","loadash" 模块的 正确 代码示例:

/*eslint no-restricted-modules: ["error", "fs", "cluster"]*/

var crypto = require('crypto');
/*eslint no-restricted-modules: ["error", {
    "paths": ["fs", "cluster"],
    "patterns": ["lodash/*", "!lodash/pick"]

var crypto = require('crypto');
var pick = require('lodash/pick');


This rule was introduced in ESLint 0.6.0.

该规则在 ESLint 0.6.0 中被引入。