NodeJS - fileURLToPath(url) 方法



类 URL 的 NodeJS url.fileURLToPath() 方法接受文件 URL 字符串或 URL 对象,并将它们转换为正确编码的路径。此方法将确保对百分比编码的字符进行绝对解码。Node.js 的 URL 模块提供了用于 URL 解析和解析的各种实用程序。

语法

以下是类 URL 的 NodeJS url.fileURLToPath() 方法的语法


 url.fileURLToPath(url)

参数

  • url:此参数指定将转换为路径的文件 URL 字符串或 URL 对象。

返回值

此方法返回完全解析的特定于平台的 Node.js 文件路径。

如果将文件 URL 字符串传递给 NodeJS url.fileURLToPath() 方法,它将转换为完全解析的特定于平台的路径。

在以下示例中,我们将文件 URL 字符串传递给 NodeJS url.fileURLToPath() 方法。


const { fileURLToPath } = require('node:url');

let FtoP = fileURLToPath('file:///C:/Desktop/file/');
console.log(FtoP);

输出

在执行上述程序时,它将生成以下输出

C:\Desktop\file\

在 Windows 上,如果文件 URL 字符串包含非 ASCII 字符,则 fileURLToPath() 方法无法转换为完全解析的路径,并返回 TypeError。

在以下示例中,我们将包含日语字符的文件 URL 字符串传递给 fileURLToPath() 方法。


const { fileURLToPath } = require('node:url');

let FtoP = fileURLToPath('file:///こんにちは:/');
console.log(FtoP);

类型错误

在执行上述程序时,它将生成以下输出

node:internal/url:1407
throw new ERR_INVALID_FILE_URL_PATH('must be absolute');
^

TypeError [ERR_INVALID_FILE_URL_PATH]: File URL path must be absolute
at new NodeError (node:internal/errors:387:5)
at getPathFromURLWin32 (node:internal/url:1407:11)
at fileURLToPath (node:internal/url:1437:22)
at Object.<anonymous> (C:\Users\Lenovo\Desktop\JavaScript\nodefile.js:3:12)
at Module._compile (node:internal/modules/cjs/loader:1126:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1180:10)
at Module.load (node:internal/modules/cjs/loader:1004:32)
at Function.Module._load (node:internal/modules/cjs/loader:839:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
at node:internal/main/run_main_module:17:47 {
code: 'ERR_INVALID_FILE_URL_PATH'
}