2013-03-16 65 views
1

我建立一個節點JS應用程序(學習),在那裏我記錄每個操作到一個名爲log.txt的節點JS FS模塊說對象沒有方法appendFile

文件中的記錄器模塊具有以下代碼:

var fs = require('fs'); 

function write(data,filename) 
{ 
    var entry = 'Time: '+new Date(); 
    if(filename !=null || filename != undefined) entry = entry+'\n\tFile: '+filename; 
    if(data !=null || data != undefined) entry = entry+'\n\tMessage: '+data; 
    entry = entry+'\n'; 

    fs.appendFile('./log.txt',entry,function(err){ 
     if(err){console.log('Log NOT Appended with data:\n\t'+entry);} 
     else{console.log('Log Appended with data:\n\t'+entry);} 
    }); 
} 

exports.write = write; 
現在

在我app.js我我需要它:

var logger = require('./logger'); 

var fs = require('fs'); 

function ReadFile() 
{ 

    var data = fs.readFileSync('./config.txt'); 
    if(data==null) 
      logger.write("Config data not found"); 
    else 
     logger.write(data,"app.js"); 
} 

ReadFile(); 

這將引發我回一個錯誤說:

Object #<Object> has no method 'appendFile' 

但是,這在早些時候在另一臺電腦上運行良好,當我嘗試在我的系統上運行我的 應用程序時,我注意到了這一點。

+0

您可以分享您在故障電腦上使用的節點版本嗎? appendFile是一個更新的方法,自v0.8 – michaelt 2013-03-16 06:46:41

+0

@michaelt我使用v0.6.12,這可能是問題,我會嘗試更新,看看它是否工作,謝謝 – somedev 2013-03-16 07:08:06

+0

是的解決了它,更新到v0 .10.0和現在它的工作原理,謝謝 – somedev 2013-03-17 09:38:55

回答

1

這是版本問題,我使用v0.6.12,沒有這個方法,我升級到了v0.10.0,它解決了它,這要感謝michaelt指出它。

+0

n00b的問題,但你如何升級到最新版本。 – jtromans 2013-04-11 13:40:13

+0

@jtromans你可以使用nvm(節點版本管理器)或簡單地稱爲「n」的另一個模塊來升級和維護系統上的節點版本,更多詳細信息請參閱此文章http://stackoverflow.com/questions/8191459/ how-to-update-node-js-npm-and-all-other-dependencies – somedev 2013-04-12 04:28:40

+0

完美,謝謝@somedev – jtromans 2013-04-19 15:26:05