Node.js path 模块的 path.join() 方法将接受一系列字符串路径段。此方法将使用平台分隔符将所有给定的字符串路径段连接在一起,然后对完整路径进行归一化。
长度为零的 Path 段将被忽略。如果连接路径字符串的长度为零,则将打印 '.。如果任何路径段不是字符串值,则会抛出 TypeError。
语法
以下是 path 模块的 Node.js path.join() 方法的语法 -
path.join([...paths])
参数
- ...paths − 此参数包含一系列由逗号分隔的路径段。
返回值
此方法通过连接所有字符串路径段来返回完整的字符串路径,这些字符串路径段在...paths 参数。
以下示例演示了 path 模块的 path.join() 方法的用法。
例path.join() 方法将一系列字符串路径段作为输入,并输出一个完整的字符串路径。
在下面的示例中,我们将一系列字符串路径段传递给 path.join() 方法。
const path = require('path');
var result = path.join('Users', 'Node.js', 'API', 'Path module');
console.log(result);
输出
如果我们编译并运行上述程序,此方法通过特定于平台的分隔符作为分隔符将所有给定的路径段连接在一起,并打印完整的路径。
例
path.join() 方法接受一系列字符串路径段,并将它们作为完整的字符串路径返回。
在以下示例中,我们尝试将字符串路径段 (“Nodefile.js”) 与当前工作目录联接。我们可以通过使用 '__dirname' 属性来获取当前工作目录。
const path = require('path');
var result = path.join(__dirname, "Nodefile.js");
console.log('Current working directory: ' + __dirname);
console.log("After the joining a segment: " + result);
输出
在在线编译器(POSIX)中执行上述程序后,该方法将字符串路径段(“Nodefile.js”)与当前工作目录连接起来。
After the joining a segment: /home/cg/root/63a028ab0650d/Nodefile.js
以下是我们在 Windows 操作系统上执行上述代码时的输出。
After the joining a segment: C:\Users\Lenovo\Desktop\JavaScript\Nodefile.js
例
如果我们将一个不是字符串类型的值传递给 ...paths 参数,该方法将抛出 TypeError。
在以下示例中,我们将一个对象而不是字符串传递给 ...path.isAbsolute() 方法的 paths 参数。
const path = require('path');
var result = path.join({});
console.log( result);
输出
正如我们在下面的输出中看到的,path.isAbsolute() 方法抛出一个 TypeError 作为 ...paths 参数不是字符串值。
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.join (path.js:1157:7)
at Object.<anonymous> (/home/cg/root/63a028ab0650d/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)