2012-04-30 6 views
46

Node.jsを使用してログファイルにデータを追加しようとしていますが、正常に動作していますが、次の行には移動しません。 \ nは以下の私の機能では動作していないようです。助言がありますか?ありがとうNode.jsの新しい行

function processInput (text) 
{  
    fs.open('H://log.txt', 'a', 666, function(e, id) { 
    fs.write(id, text + "\n", null, 'utf8', function(){ 
    fs.close(id, function(){ 
    console.log('file is updated'); 
    }); 
    }); 
    }); 
} 
+4

Windowsベースのテキストエディタを使用してファイルを表示しているので、CRLFペア「\ r \ n」が必要ですか? – Phrogz

答えて

83

これはWindowsで実行しているようです(H://log.txtファイルパスが指定されています)。

\nの代わりに\r\nを試してみてください。

正直なところ、\nは問題ありません。メモ帳などでログファイルを表示している可能性があります。これはWindows以外の改行を表示しません。別のビューア/エディタ(Wordpadなど)で開きます。

+1

はノートパッドで表示されていました:) – FacePalm

35

代わりにos.EOL定数を使用してください。

var os = require("os"); 

function processInput (text) 
{  
    fs.open('H://log.txt', 'a', 666, function(e, id) { 
    fs.write(id, text + os.EOL, null, 'utf8', function(){ 
    fs.close(id, function(){ 
    console.log('file is updated'); 
    }); 
    }); 
    }); 
} 
+4

(1/2)node.jsはさまざまな環境で動作できるため、アプリケーションをWindows環境からLinux環境に移行することが可能です。つまり、アプリケーションが 'os.EOL'を使ってログを追加している場合、アプリケーションがウィンドウ上で実行されていたときの'/r/n'で終わる行があり、 '/ n'で終わる行があります。 (アプリケーションがLinux上で実行されているとき)。特に、ログファイルの自動解析が行われている場合は、特に問題が生じる可能性があります。私は '/ n'を使うことにしました。 – Sharky

+1

(2/2)しかし、私が完全に規制された世界に住んでいれば、それは正しい答えとなるでしょう。 – Sharky

+0

私はlinuxを使っていますが、将来的には移植性を望むかもしれないので、このアプローチが好きです。 – sdkks

関連する問題