के माध्यम से node.js में फ़ाइल परिवर्तनों का पता लगाएं, यदि फ़ाइल बदलती है, तो मैं फ़ाइल के लिए परिवर्तनों का पता लगाना चाहता हूं, मैं सर्वर पर फ़ाइल की प्रतिलिपि बनाने के लिए एक scp कमांड निष्पादित करने के लिए child_process का उपयोग करूंगा। मैंने node.js दस्तावेज़ को देखा , fs.watchFile फ़ंक्शन ऐसा लगता है जो मैं करना चाहता हूं, लेकिन जब मैंने इसे आजमाया, तो किसी भी तरह से यह मेरी अपेक्षा के अनुसार काम नहीं करता है। निम्न कोड का इस्तेमाल किया गया:घड़ीफाइल
var fs = require('fs');
console.log("Watching .bash_profile");
fs.watchFile('/home/test/.bash_profile', function(curr,prev) {
console.log("current mtime: " +curr.mtime);
console.log("previous mtime: "+prev.mtime);
if (curr.mtime == prev.mtime) {
console.log("mtime equal");
} else {
console.log("mtime not equal");
}
});
ऊपर कोड के साथ
, अगर मैं देख चुके फ़ाइल तक पहुँच, कॉलबैक फ़ंक्शन पर अमल करने के लिए, यह उत्पादन ही mtime जाएगा, और हमेशा उत्पादन "mtime नहीं बराबर" (मैं केवल पहुँचने के फ़ाइल)। आउटपुट:
Watching .bash_profile
current mtime: Mon Sep 27 2010 18:41:27 GMT+0100 (BST)
previous mtime: Mon Sep 27 2010 18:41:27 GMT+0100 (BST)
mtime not equal
किसी को पता है क्यों अगर बयान में विफल रहा है (यह भी का उपयोग कर === की पहचान की जांच करने की कोशिश की, लेकिन अभी भी एक ही आउटपुट प्राप्त) जब दो mtime ही कर रहे हैं?
धन्यवाद, मुझे एहसास नहीं हुआ कि mtime संपत्ति एक वस्तु है (मैंने सोचा था कि वे स्ट्रिंग ऑब्जेक्ट हैं :(मैंने टाइपऑफ curr.mtime टाइप किया है, यह ऑब्जेक्ट लौटाता है, क्या जावास्क्रिप्ट में कोई तरीका है यह पता लगाने के लिए कि किस प्रकार की ऑब्जेक्ट उदाहरण के लिए, मैंने आपको obj1 == obj2 सोचा था, क्योंकि आप केवल समानता जांच को बदलते हैं, जब वे पहचान जांच करते हैं तो यह केवल झूठा है obj1 ==== obj2। –
आप सेशन का उपयोग कर सकते हैं इरेटर 'exampleof' इस तरह: 'var d = नई तिथि(); यदि (डी उदाहरण दिनांक == सत्य) चेतावनी (1); या वैकल्पिक रूप से टेक्स्ट ऑब्जेक्ट प्रकार प्राप्त करने के लिए 'var d = new date(); Object.prototype.toString।फोन (घ); // "[ऑब्जेक्ट दिनांक]" ' – Andris
एक बात जो मैंने नोटिस की है, अगर मैं ऐसा कुछ करता हूं: __var i = 10; अगर (मैं उदाहरण संख्या) चेतावनी (1); __ अगर कथन कभी सच नहीं है (टाइप करें i => "संख्या" और Object.prototype.toString.call (i) => "[ऑब्जेक्ट संख्या]", हालांकि अगर मैं घोषणा करता हूं के रूप में: var i = संख्या (10), यह काम करता है। किसी को इसके पीछे कारण पता है? –