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 中对目录路径进行字符串连接
此规则的错误代码示例
在游乐场中打开
/*eslint no-path-concat: "error"*/
var fullPath = ;
var fullPath = ;
此规则的正确代码示例
在游乐场中打开
/*eslint no-path-concat: "error"*/
var fullPath = dirname + "/foo.js";
何时不使用它
如果您想允许路径名的字符串连接。
版本
此规则是在 ESLint v0.4.0 中引入的。