ส่วนสำคัญ
ใน Node.js __dirname
เป็นไดเรกทอรีที่สคริปต์การดำเนินการอยู่ในปัจจุบันอยู่เสมอ ( ดูสิ่งนี้ ) ดังนั้นถ้าคุณพิมพ์__dirname
ลงในค่าที่จะเป็น/d1/d2/myscript.js
/d1/d2
โดยคมชัด.
ช่วยให้คุณไดเรกทอรีที่คุณวิ่งnode
คำสั่งในหน้าต่าง terminal ของคุณ (เช่นไดเรกทอรีการทำงานของคุณ) เมื่อคุณใช้ห้องสมุดเหมือนและpath
fs
เทคนิคก็เริ่มออกเป็นไดเรกทอรีการทำงานของคุณ process.chdir()
แต่สามารถเปลี่ยนการใช้
ยกเว้นในกรณีที่คุณใช้กับ.
require()
ภายในเส้นทางอยู่เสมอเมื่อเทียบกับไฟล์ที่มีการเรียกร้องให้require
require
ตัวอย่างเช่น...
สมมติว่าโครงสร้างไดเรกทอรีของคุณคือ
/dir1
/dir2
pathtest.js
และpathtest.js
มี
var path = require("path");
console.log(". = %s", path.resolve("."));
console.log("__dirname = %s", path.resolve(__dirname));
และคุณทำ
cd /dir1/dir2
node pathtest.js
คุณได้รับ
. = /dir1/dir2
__dirname = /dir1/dir2
ไดเรกทอรีการทำงานของคุณคือ/dir1/dir2
สิ่งที่.
แก้ไขได้ เนื่องจากpathtest.js
ตั้งอยู่ใน/dir1/dir2
นั่นคือสิ่งที่__dirname
จะแก้ไขเช่นกัน
อย่างไรก็ตามหากคุณเรียกใช้สคริปต์จาก /dir1
cd /dir1
node dir2/pathtest.js
คุณได้รับ
. = /dir1
__dirname = /dir1/dir2
ในกรณีดังกล่าวไดเรกทอรีทำงานของคุณเป็น/dir1
สิ่งที่.
แก้ไขได้ แต่__dirname
ยังแก้ไข/dir1/dir2
ได้
ใช้.
ภายในrequire
...
หากภายในdir2/pathtest.js
คุณมีrequire
การโทรเข้ารวมไฟล์ภายในdir1
ที่คุณจะเสมอทำ
require('../thefile')
เนื่องจากเส้นทางภายในrequire
นั้นสัมพันธ์กับไฟล์ที่คุณเรียกใช้อยู่เสมอ มันไม่มีส่วนเกี่ยวข้องกับไดเรกทอรีทำงานของคุณ