path.join în Node.js

Lipește mai multe bucăți într-o singură cale, cu separatorul corect pentru sistemul de operare, și curăță ./ și ../.

Sintaxă
import path from "node:path";
path.join(parte1, parte2, ...)

Ce face path.join

path.join unește părțile primite cu separatorul sistemului: / pe Linux și macOS, \ pe Windows. Apoi normalizează rezultatul: elimină / dublate, segmentele . și rezolvă .. (urcă un director).

Folosește path.join în loc să lipești șiruri cu + sau cu șabloane: codul rămâne corect pe orice sistem și nu mai depinde de faptul că o parte se termină sau nu cu /.

join nu face calea absolută și nu verifică dacă ea există pe disc: lucrează doar cu text. Pentru o cale absolută folosește path.resolve. Exemplele de mai jos au rulat pe Linux/macOS; pe Windows rezultatele au \ în loc de /.

Parametri

Parametru Descriere
parte1, parte2, ... Bucățile căii, ca șiruri. Părțile goale sunt ignorate.

Ce returnează

Calea rezultată, normalizată. Dacă rezultatul ar fi gol, întoarce ".".

Exemple

Exemplul 1: Construirea căilor

import path from "node:path";

console.log(path.join("documente", "facturi", "2026.pdf"));
console.log(path.join("documente/", "/facturi/", "2026.pdf"));
console.log(path.join("src", "pagini", "..", "index.html"));
console.log(path.join("./poze", "./iasi.jpg"));
console.log(path.join(""));

Rezultat

documente/facturi/2026.pdf
documente/facturi/2026.pdf
src/index.html
poze/iasi.jpg
.

Exemplul 2: Fișiere lângă script

import.meta.dirname este directorul scriptului; lipit cu join dă calea către un fișier de lângă el, indiferent din ce director rulezi node.

import path from "node:path";
import { mkdir, writeFile, readFile } from "node:fs/promises";

const caleDate = path.join(import.meta.dirname, "date", "orase.json");
console.log(path.relative(process.cwd(), caleDate));

await mkdir(path.dirname(caleDate), { recursive: true });
await writeFile(caleDate, JSON.stringify(["Iași", "Cluj", "Timișoara"]));
console.log(JSON.parse(await readFile(caleDate, "utf8")));

Rezultat

date/orase.json
[ 'Iași', 'Cluj', 'Timișoara' ]

Exemplul 3: join pentru Windows și Linux din același cod

path.posix și path.win32 lucrează mereu după regulile unui anumit sistem, indiferent unde rulează codul.

import path from "node:path";

console.log(path.posix.join("home", "ana", "proiect"));
console.log(path.win32.join("C:\\Users", "Ana", "proiect"));

Rezultat

home/ana/proiect
C:\Users\Ana\proiect

Greșeli frecvente

  • Construiești căi cu "dir" + "/" + nume: pe Windows separatorul diferă și apar ușor // dublate. Folosește path.join.
  • Folosești path.join pentru URL-uri (https://...): pe Windows rezultatul ar avea \, iar // din protocol ar fi comprimat. Pentru adrese web folosește new URL(cale, baza).
  • Lipești o cale primită de la utilizator (../../etc/passwd): join rezolvă .. și poți ieși din directorul permis. Verifică rezultatul cu path.resolve și startsWith.

Comenzi înrudite