Apa itu __ dirname dalam javascript?

Baru-baru ini, saya telah menggunakan Nodejs untuk hampir semua proyek saya, salah satu teknologi backend paling disukai yang tersedia saat ini. Setelah beberapa proyek dengan Nodejs, saya segera menyadari bahwa sebagian besar pengembang seperti saya mengalami kesulitan mengidentifikasi perbedaan halus antara dua objek global node, sehingga __dirname dan proses. cwd()

Apa itu NodeJS?

Node. js adalah runtime JavaScript sumber terbuka yang dibangun di atas Mesin V8 Chrome. JavaScript tradisional dijalankan di browser tetapi dengan Node. js kita dapat mengeksekusi JavaScript di server, perangkat keras, dll

Sekarang, mari kita lihat apa variabel global ini dan bagaimana perbedaannya dalam pekerjaannya

__dirname

Ini adalah variabel lokal yang mengembalikan nama direktori modul saat ini. Ini mengembalikan lokasi folder file JavaScript saat ini

proses. cwd()

Node. js memiliki objek global yang disebut global, dan objek proses terletak di dalam objek global
proses. cwd() memberikan nama direktori tempat aplikasi NodeJS dilayani. Dengan kata lain, direktori kerja dari proses NodeJS

Demonstrasi Praktis

  1. Dalam Aplikasi simpul, saya memiliki App. js sebagai file entri saya di direktori root app.js

Apa itu __ dirname dalam javascript?

Jalankan aplikasi. js di terminal

node app.js

Masuk ke mode layar penuh Keluar dari mode layar penuh

KELUARAN

======== process.cwd()=========
C:\Users\qbentil\blog6
======== __dirname=========
C:\Users\qbentil\blog6
_

Masuk ke mode layar penuh Keluar dari mode layar penuh

  1. Buat struktur proyek berikut

Apa itu __ dirname dalam javascript?

cuplikan kode di try/try. js

Apa itu __ dirname dalam javascript?

cuplikan kode untuk aplikasi. js

Apa itu __ dirname dalam javascript?

run node app.js

Masuk ke mode layar penuh Keluar dari mode layar penuh

KELUARAN

======== process.cwd() from /try/try.js=========
C:\Users\User\Desktop\blog6
======== __dirname from /try/try.js=========
c:\Users\User\Desktop\blog6\try
PS C:\Users\User\Desktop\blog6> 

Masuk ke mode layar penuh Keluar dari mode layar penuh

Output di atas menunjukkan bahwa direktori file try. js ada di blog6/coba sedangkan proses simpul saat ini berjalan di folder blog6/

Kesimpulan

Meskipun variabel cakupan di atas, penting untuk diperhatikan perbedaan berikut untuk mengetahui variabel mana yang akan dipanggil kapan saja dalam aplikasi Anda

Perbedaan antara __dirname dan proses. cwd()

__dirnameproses. cwd() Mengembalikan nama direktori dari direktori yang berisi file kode sumber. Ini mengembalikan nama direktori kerja saat ini tempat proses NodeJS dilayani. Itu tergantung pada direktori saat ini. Itu tergantung pada perintah simpul yang memohon. Itu lokal untuk setiap modul. Ini adalah objek global node

Sebagai pengembang NodeJS, sangat penting untuk mengetahui cara menggunakan variabel-variabel ini karena terkadang sangat membingungkan dan memicu bug yang tidak perlu di aplikasi Anda

Jika Anda sedang membangun Node. Aplikasi js dengan modul ES alih-alih modul CommonJS ("impor" alih-alih "wajib", dalam istilah yang lebih sederhana), Anda harus melakukan sesuatu sebelum menulis __filename dan __direname dalam kode Anda

Masalah

Di Node. js. Iklan

  • __nama file. Mengembalikan jalur absolut ke file saat ini
  • __dirname. Mengembalikan jalur absolut ke folder induk

Hal-hal itu belum siap digunakan jika Anda bekerja dengan modul ES dan Anda akan menemui kesalahan berikut. Iklan

ReferenceError: __dirname is not defined in ES module scope
_

Dan

ReferenceError: __filename is not defined in ES module scope

Jangan panik. Solusinya hanya beberapa baris kode

Solusinya

Inilah cara kami memecahkan masalah

import { fileURLToPath } from 'url'
import { dirname } from 'path'
const __filename = fileURLToPath(import.meta.url)
const __dirname = dirname(__filename)

console.log(__filename);
console.log(__dirname);
_

Saat menjalankan kode sebelumnya, Anda akan melihat keluaran yang mirip dengan ini

/Users/goodman/Desktop/Dev/node/node_kindacode/src/index.js
/Users/goodman/Desktop/Dev/node/node_kindacode/src

Kesimpulan

Anda telah mempelajari cara menggunakan __dirname dan __filename saat bekerja dengan modul ES6 di Node.js. js. Jika Anda ingin menjelajahi hal-hal yang lebih modern dan menarik tentang runtime Javascript, lihat artikel berikut. Iklan

Bagaimana Anda menggunakan __ dirname dalam sebuah modul?

Untuk mendapatkan kembali __dirname (dan __filename ), Anda dapat menambahkan kode seperti ini di bagian atas file apa pun yang memerlukannya. impor * sebagai url dari 'url'; . fileURLToPath(import.

Apa itu dirname di jalur?

dirname() method mengembalikan direktori jalur file .

Bagaimana cara mendapatkan dirname di JavaScript?

Anda dapat menggunakan __dirname untuk memeriksa di direktori mana file Anda berada. Kemudian, jalankan skrip. simpul src/api/controller. js .

Apa itu __ dirname di Webpack?

Opsi __dirname di webpack . Dirname file input relatif terhadap opsi konteks