Node.jsでパスを連結する

2024/09/05に公開

JavaScript (TypeScript) でパスを連結するとき、文字列を結合して行いがちです。

const baseUrl = "https://example.com";
const urlPath = "foo/bar";
const url = `${baseUrl}/${urlPath}`;

console.log(url); // https://example.com/foo/bar

上の例では正しいパスが得られましたが、連結する値によっては不都合が生じる場合があります。

const baseUrl = "https://example.com/";
const urlPath = "foo/bar";
const url = `${baseUrl}/${urlPath}`;

console.log(url); // https://example.com//foo/bar

このURLでもうまく動く時もありますが、そうでない時もあります。どんな時でも安全にパスを連結するためにPathモジュールの join メソッドを使用します。

const path = require("path");
const baseUrl = "https://example.com";
const urlPath = "foo/bar";
const url = path.join(baseUrl, urlPath);

console.log(url); // https://example.com/foo/bar

上の例で不都合が生じる可能性があるパスが生成されたものでも、正しいパスが取得できます。

const path = require("path");
const baseUrl = "https://example.com/";
const urlPath = "foo/bar";
const url = path.join(baseUrl, urlPath);

console.log(url); // https://example.com/foo/bar

Discussion