Node.js/Node

[NODE] πŸ“š __dirname / __filename / process.cwd() 차이 정리

인파_ 2021. 10. 28. 12:15

κ²½λ‘œμ°¨μ΄μ •λ¦¬

__dirname 와 __filename

λ…Έλ“œμ—μ„œλŠ” λͺ¨λ“ˆ 관계가 μžˆλŠ” κ²½μš°κ°€ λ§Žμ•„ ν˜„μž¬ 파일의 κ²½λ‘œλ‚˜ 파일λͺ…을 μ•Œμ•„μ•Ό ν•˜λŠ” κ²½μš°κ°€ λ§Žλ‹€.

λ…Έλ“œλŠ” __filename, __dirname μ΄λΌλŠ” ν‚€μ›Œλ“œλ‘œ κ²½λ‘œμ— λŒ€ν•œ 정보둀 μ œκ³΅ν•œλ‹€.

νŒŒμΌμ— __filename, __dirname λ³€μˆ˜λ₯Ό 넣어두면 μ‹€ν–‰μ‹œ ν˜„μž¬ 파일λͺ…κ³Ό 파일 경둜둜 바뀐닀.

 

μ•„λž˜ μ—μ œμ˜ js 파일의 μœ„μΉ˜λŠ” /Users/ano/temp/directory.js μ΄λ‹€.

// file λͺ…을 ν¬ν•¨ν•œ μ ˆλŒ€κ²½λ‘œ 
console.log(__filename); // C:/Users/ano/temp/directory.js

// file λͺ…을 μ œμ™Έν•œ μ ˆλŒ€ 경둜 
console.log(__dirname); // C:/Users/ano/temp

__dirname 와 process.cwd()

process.cwd()λŠ” nodeλͺ…령을 ν˜ΈμΆœν•œ μž‘μ—…λ””λ ‰ν„°λ¦¬μ˜ μ ˆλŒ€κ²½λ‘œμ΄λ‹€

만일 C λ””λ ‰ν† λ¦¬μ—μ„œ λ…Έλ“œ μ‹€ν–‰λͺ…령을 경둜λ₯Ό 톡해 주게 λœλ‹€λ©΄,

C: > node Users/ano/temp/directory.js
// __dirname은 ν˜„μž¬ μ‹€ν–‰ν•˜λŠ” 파일의 μ ˆλŒ€κ²½λ‘œμ΄λ‹€
console.log(__dirname); // C:/Users/ano/temp

// process.cwd()λŠ” nodeλͺ…령을 ν˜ΈμΆœν•œ μž‘μ—…λ””λ ‰ν„°λ¦¬μ˜ μ ˆλŒ€κ²½λ‘œμ΄λ‹€
console.log(process.cwd()); // C:

경둜λ₯Ό λ‚˜λˆˆ 이유 πŸ”₯ 

cmdμ—μ„œ μ„œλ²„λ₯Ό μ‹€ν–‰ν•  js파일 μœ„μΉ˜μ— λ”°λΌμ„œ μƒλŒ€κ²½λ‘œκ°€ 달라지기 λ•Œλ¬Έμ΄λ‹€.

μš°λ¦¬λŠ” 보톡 μ ˆλŒ€κ²½λ‘œκ°€ μ•„λ‹Œ μƒλŒ€κ²½λ‘œ κΈ°μ€€μœΌλ‘œ ./파일.js 둜 srcλ₯Ό 뢈러였기 λ•Œλ¬Έμ—,

μƒλŒ€κ²½λ‘œκ°€ 달라지면, νŒŒμΌμ„ λͺ»λΆˆλŸ¬μ™€ 404 μ—λŸ¬λ₯Ό λ‚Όμˆ˜ μžˆλ‹€.

 

κ²½λ‘œμ°¨μ΄μ •λ¦¬

ch4에 μžˆλŠ” νŒŒμΌμ„ μ‹€ν–‰ν•˜κΈ° μœ„ν•΄ 경둜λ₯Ό μ£Όμ–΄ μ‹€ν–‰ν•˜μ˜€λ‹€.

ν•˜μ§€λ§Œ λ…Έλ“œμ‹€ν–‰ κ²½λ‘œλŠ” NODE이기 λ•Œλ¬Έμ—, μƒλŒ€κ²½λ‘œλŠ” NODEλ₯Ό κΈ°μ€€μœΌλ‘œ 작히게 λœλ‹€.

μ΄λ•Œ __dirname을 μ¨μ„œ νŒŒμΌμ‹€ν–‰ 경둜λ₯Ό κΈ°μ€€μœΌλ‘œ μž‘μ•„μ€˜μ•Ό ν•œλ‹€.