Process.platform ส่งคืน "win32" สำหรับ Windows ใน Windows ไดเรกทอรีบ้านของผู้ใช้อาจเป็น C: \ Users [USERNAME] หรือ C: \ Documents and Settings [USERNAME] ขึ้นอยู่กับเวอร์ชันของ Windows ที่กำลังใช้งานอยู่ ใน Unix นี่ไม่ใช่ปัญหา
Process.platform ส่งคืน "win32" สำหรับ Windows ใน Windows ไดเรกทอรีบ้านของผู้ใช้อาจเป็น C: \ Users [USERNAME] หรือ C: \ Documents and Settings [USERNAME] ขึ้นอยู่กับเวอร์ชันของ Windows ที่กำลังใช้งานอยู่ ใน Unix นี่ไม่ใช่ปัญหา
คำตอบ:
ดังที่ได้กล่าวไว้ในคำตอบล่าสุดวิธีที่ต้องการคือ:
const homedir = require('os').homedir();
[คำตอบดั้งเดิม] : ทำไมไม่ใช้USERPROFILE
ตัวแปรสภาพแวดล้อมใน win32
function getUserHome() {
return process.env[(process.platform == 'win32') ? 'USERPROFILE' : 'HOME'];
}
path.resolve()
อาจให้การฟื้นฟูในแง่ของ slashes ต่อท้าย, อาจไปข้างหน้า / backslashes แปลก ๆ , ฯลฯ ... (โดยเฉพาะอย่างยิ่งถ้าคุณมีการดำเนินงานไฟล์ในใจ, หลังจากได้รับข้อมูลนี้)
os.homedir()
ถูกเพิ่มโดย PR นี้และเป็นส่วนหนึ่งของการเผยแพร่ nodejs สาธารณะ 4.0.0
ตัวอย่างการใช้งาน:
const os = require('os');
console.log(os.homedir());
os.homedir()
เป็นของเล่นใหม่ที่น่ากลัว
const os = require('os');
ด้วย
มันจะมีความแม่นยำมากกว่าในการใช้คุณสมบัติไม่ใช่ค่าตัวแปร โดยเฉพาะอย่างยิ่งเนื่องจากมี 2 ตัวแปรที่เป็นไปได้สำหรับ Windows
function getUserHome() {
return process.env.HOME || process.env.USERPROFILE;
}
แก้ไข : ดังที่ได้กล่าวไว้ในคำตอบล่าสุดhttps://stackoverflow.com/a/32556337/103396เป็นวิธีที่เหมาะสมในการไป ( require('os').homedir()
)
\users\name
และ USERPROFILE c:\users\name
มี ดังนั้นวิธีนี้จึงไม่แม่นยำและแข็งแกร่งเท่ากับ @maerics '
osenv.home()
ใช้ มันดูแลโดย isaacs และฉันเชื่อว่ามันถูกใช้โดย npm เอง
oshome
ใช้os-homedir
ภายใต้ประทุนหากคุณต้องการฟังก์ชั่นเฉพาะนั้น
getUserRootFolder() {
return process.env.HOME || process.env.HOMEPATH || process.env.USERPROFILE;
}