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 中引入的。