การแก้ปัญหาคือการใช้:
delete require.cache[require.resolve(<path of your script>)]
ค้นหาคำอธิบายพื้นฐานสำหรับผู้ที่ชอบฉันที่นี่เป็นเรื่องใหม่ในเรื่องนี้:
สมมติว่าคุณมีexample.jsไฟล์จำลองในรูทของไดเรกทอรี:
exports.message = "hi";
exports.say = function () {
console.log(message);
}
จากนั้นคุณrequire()ชอบสิ่งนี้:
$ node
> require('./example.js')
{ message: 'hi', say: [Function] }
หากคุณเพิ่มบรรทัดลักษณะนี้ลงในexample.js:
exports.message = "hi";
exports.say = function () {
console.log(message);
}
exports.farewell = "bye!"; // this line is added later on
และดำเนินการต่อในคอนโซลโมดูลจะไม่ถูกอัพเดต:
> require('./example.js')
{ message: 'hi', say: [Function] }
นั่นคือเมื่อคุณสามารถใช้delete require.cache[require.resolve()]ระบุไว้ในคำตอบของ luff :
> delete require.cache[require.resolve('./example.js')]
true
> require('./example.js')
{ message: 'hi', say: [Function], farewell: 'bye!' }
ดังนั้นแคชจึงถูกทำความสะอาดและrequire()รวบรวมเนื้อหาของไฟล์อีกครั้งโหลดค่าปัจจุบันทั้งหมด