• Node.js Video Tutorials

Node.js - path.resolve() 方法



path 模組的 Node.js path.resolve() 方法將一系列路徑段;或路徑組合成一個絕對路徑。給定的路徑段從右到左處理,每個後續路徑都預先附加,直到形成一個絕對路徑

即使在處理完所有給定的路徑段後,如果仍未形成絕對路徑,此方法也將使用當前工作目錄。此方法將忽略零長度的路徑段。如果此方法未傳遞任何路徑段,則將返回當前工作目錄的絕對路徑。

語法

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

path.resolve([...paths])

引數

  • …paths − 此引數包含要解析以形成完整絕對路徑的一系列路徑段

返回值

此方法將返回一個表示絕對路徑字串

示例

Node.js path.resolve() 方法將從右到左解析給定路徑的序列,將每個路徑預先附加,直到建立絕對路徑。

在以下示例中,我們傳遞了不是絕對路徑的路徑段

const path = require('path');
path1 = path.resolve('CSS/', "..", 'HTML/', "..", 'file.html')
console.log(path1);

輸出

在線上編譯器(POSIX)中執行上述程式後,path.resolve() 方法從右到左解析路徑段並返回絕對路徑。

/home/cg/root/63a02f1595a95/file.html

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

C:\Users\Lenovo\Desktop\JavaScript\file.html

示例

如果未將任何路徑段傳遞給path.resolve() 方法,它將返回當前工作目錄的絕對路徑

在以下程式中,我們向 path 引數傳遞了一個空字串

const path = require('path');
path1 = path.resolve('')
console.log(path1);

輸出

在線上編譯器(POSIX)中執行上述程式後,path.resolve() 方法將返回當前工作目錄的絕對路徑。

/home/cg/root/63a02f1595a95

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

C:\Users\Lenovo\Desktop\JavaScript

示例

如果第一個路徑未被視為根段,則path.resolve() 方法將為傳遞的路徑段分配當前工作目錄。

在下面的程式中,我們沒有將第一個段視為根段。

const path = require('path');
path1 = path.resolve('CSS/', 'HTML/', 'file.html')
console.log(path1);

輸出

如果我們在線上編譯器(POSIX)中編譯並執行上述程式,path.resolve() 將返回附加到當前工作目錄的給定路徑段。

/home/cg/root/63a02f1595a95/CSS/HTML/file.html

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

C:\Users\Lenovo\Desktop\JavaScript\CSS\HTML\file.html

示例

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

在給定的程式中,我們向path.resolve() 方法的…paths 引數傳遞了一個陣列的例項,而不是一個字串

const path = require('path');
path1 = path.resolve(['/file'])
console.log(path1);

TypeError

如果我們編譯並執行上述程式,path.relative() 方法將丟擲TypeError,因為…paths 引數不是字串

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.resolve (path.js:1090:7)
   at Object.<anonymous> (/home/cg/root/63a02f1595a95/main.js:3:14)
   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
廣告