版本

no-path-concat

禁用与 __dirname__filename 的字符串连接

重要提示

此规则在 ESLint v7.0.0 中已弃用。请使用 eslint-plugin-n相应的规则

了解更多

在 Node.js 中,__dirname__filename 全局变量分别包含当前执行脚本文件的目录路径和文件路径。有时,开发人员尝试使用这些变量来创建到其他文件的路径,例如

var fullPath = __dirname + "/foo.js";

但是,这样做存在一些问题。首先,您无法确定脚本在什么类型的系统上运行。Node.js 可以在任何计算机上运行,包括使用不同路径分隔符的 Windows。因此,非常容易使用字符串连接并假设 Unix 风格的分隔符来创建无效路径。还可能出现双分隔符,或者最终得到无效路径。

为了避免对如何创建正确路径的任何混淆,Node.js 提供了 path 模块。此模块使用系统特定的信息来始终返回正确的值。因此,您可以将前面的示例重写为

var fullPath = path.join(__dirname, "foo.js");

此示例不需要包含分隔符,因为 path.join() 将以最合适的方式进行操作。或者,您可以使用 path.resolve() 来检索完全限定的路径

var fullPath = path.resolve(__dirname, "foo.js");

path.join()path.resolve() 都是在创建文件或目录路径时替代字符串连接的合适选择。

规则详情

此规则旨在防止在 Node.js 中连接目录路径的字符串

此规则的错误代码示例

在 Playground 中打开
/*eslint no-path-concat: "error"*/

var fullPath = __dirname + "/foo.js";

var fullPath = __filename + "/foo.js";

此规则的正确代码示例

在 Playground 中打开
/*eslint no-path-concat: "error"*/

var fullPath = dirname + "/foo.js";

何时不使用它

如果您想允许路径名的字符串连接。

版本

此规则在 ESLint v0.4.0 中引入。

资源

更改语言