2012-04-30 14 views
46

Sto provando ad aggiungere dati a un file di log utilizzando Node.js e che funziona bene ma non sta andando alla riga successiva. \ n non sembra funzionare nella mia funzione di seguito. Eventuali suggerimenti? GrazieNew Line in 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

Sei su Windows/usando un editor di testo basato su Windows per visualizzare il file, e quindi hanno bisogno di una coppia CRLF, '\ r \ n '? – Phrogz

risposta

83

Sembra che si sta eseguendo questo su Windows (dato il vostro percorso del file H://log.txt).

Provare a utilizzare \r\n anziché solo \n.

Onestamente, \n va bene; probabilmente stai visualizzando il file di registro nel blocco note o qualcos'altro che non rende i ritorni non Windows. Prova ad aprirlo in un altro visualizzatore/editor (ad esempio Wordpad).

+1

stava visualizzando nel blocco note :) – FacePalm

35

Utilizzare invece la costante 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) Si noti che poiché node.js può essere eseguito su molti ambienti diversi, potrebbe essere possibile spostare l'applicazione da un ambiente Windows a uno di Linux. questo significa che se la tua applicazione sta aggiungendo i registri usando 'os.EOL', avrai alcune righe che terminano con'/r/n' (dal momento in cui l'app è stata eseguita su Windows) e poi le righe terminano con '/ n' (quando l'applicazione viene eseguita su Linux). Questo ha il potenziale di dare qualche problema, specialmente se è in corso l'analisi automatica dei file di registro. Ho deciso di usare solo '/ n'. – Sharky

+1

(2/2) Ciononostante ho risvegliato la tua risposta come sarebbe corretta, se vivessimo in un mondo perfettamente regolato. – Sharky

+0

Io uso Linux ma mi è piaciuto questo approccio in quanto potrei volere la portabilità in futuro. – sdkks