• Node.js Video Tutorials

Node.js - path.normalize() 方法



Node.js 的 path.normalize() 方法屬於 path 模組,用於規範化給定的路徑。如果路徑的任何段包含像 '..' 和 '.' 這樣的字串,此方法將消除它們並提供完整的規範化路徑。

如果給定路徑中存在多個連續的路徑分隔符,它們將被替換為平臺特定的路徑分隔符的單個例項(**Windows 上為 '\',POSIX 上為 '/'**)。此方法也可用於解析相對路徑,使其更容易構建有效的路徑,而不管當前工作目錄如何。此方法會保留尾隨分隔符。

語法

以下是 path 模組中 Node.js path.normalize() 方法的語法:

path.normalize( path )

引數

  • path − 此引數指定要規範化的路徑。

返回值

此方法將返回一個字串,該字串指定規範化的路徑。

示例

如果將路徑傳遞給該方法,它將規範化 git。

在下面的示例中,我們嘗試透過提供路徑來使用該方法。

const path = require('path');
var result = path.normalize("/Users/Lenovo/Desktop/JavaScript/Nodefile.js");
console.log(result);

輸出

在線上編譯器 (POSIX) 中執行上述程式後,path.normalize() 方法返回規範化的路徑。

/Users/Lenovo/Desktop/JavaScript/Nodefile.js

以下是我們在 WINDOWS 作業系統上執行上述程式碼時的輸出。

\Users\Lenovo\Desktop\JavaScript\Nodefile.js

示例

如果 '..' 作為路徑段傳遞,此方法將對其進行修正並規範化路徑。

在給定的程式中,我們提供 (..) 作為路徑段。

const path = require('path');

var result = path.normalize("/Users/Lenovo/Desktop/../Nodefile.js");
console.log(result);

輸出

在線上編譯器 (POSIX) 中執行上述程式後,此方法消除了包含 '..' 的段並返回規範化的路徑。

/Users/Lenovo/Nodefile.js

以下是我們在 WINDOWS 作業系統上執行上述程式碼時的輸出。

\Users\Lenovo\Nodefile.js

示例

如果 '.' 作為路徑段傳遞,path.normalize() 方法將消除它並規範化路徑。

在下面的示例中,我們提供 (.) 作為路徑段。

const path = require('path');

var result = path.normalize("/Users/Lenovo/./JavaScript/Nodefile.js");
console.log(result);

輸出

在線上編譯器 (POSIX) 中執行上述程式後,該方法透過消除 "." 返回完整的規範化路徑。

/Users/Lenovo/JavaScript/Nodefile.js

以下是我們在 WINDOWS 作業系統上執行上述程式碼時的輸出。

\Users\Lenovo\JavaScript\Nodefile.js

示例

如果 WINDOWS 或 POSIX 在路徑中識別多個路徑分隔符,則它們將被首選分隔符的例項替換(**Windows 上為 '\',POSIX 上為 '/'**)。

在下面的給定程式中,我們為路徑提供多個路徑分隔符。

const path = require('path');

var result = path.normalize("/Users/////Lenovo/////Desktop/////Nodefile.js"); 
console.log(result);

輸出

如果我們在線上編譯器 (POSIX) 中編譯並執行上述程式,path.normalize() 方法將透過將多個路徑分隔符替換為單個分隔符來返回規範化的字串路徑。

/Users/Lenovo/Desktop/Nodefile.js

以下是我們在 WINDOWS 作業系統上執行上述程式碼時的輸出。

\Users\Lenovo\Nodefile.js

示例

如果我們向 path 引數傳遞不是 字串 型別的引數,則該方法將丟擲 TypeError

在給定的示例中,我們向該方法的 path 引數傳遞了一個 陣列,而不是 字串

const path = require('path');
var result = path.normalize([]);
console.log(result);

TypeError

正如我們在下面的輸出中看到的,該方法丟擲了 TypeError,因為 path 引數不是 字串 值。

path.js:39
   throw new ERR_INVALID_ARG_TYPE('path', 'string', path);
   ^
   
TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string. Received type object
   at assertPath (path.js:39:11)
   at Object.normalize (path.js:1122:5)
   at Object.<anonymous> (/home/cg/root/63a02f1595a95/main.js:3:19)
   at Module._compile (internal/modules/cjs/loader.js:702:30)
   at Object.Module._extensions..js (internal/modules/cjs/loader.js:713:10)
   at Module.load (internal/modules/cjs/loader.js:612:32)
   at tryModuleLoad (internal/modules/cjs/loader.js:551:12)
   at Function.Module._load (internal/modules/cjs/loader.js:543:3)
   at Function.Module.runMain (internal/modules/cjs/loader.js:744:10)
   at startup (internal/bootstrap/node.js:238:19)
nodejs_path_module.htm
廣告