版本

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 = __dirname + "/foo.js";

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

此規則的正確程式碼範例

在線上編輯器中開啟
/*eslint no-path-concat: "error"*/

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

何時不使用

如果您想要允許路徑名稱的字串串接。

版本

此規則是在 ESLint v0.4.0 中引入的。

資源

變更語言