➕
Node.jsでパスを連結する
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