2012-04-30 31 views
46

Estoy intentando adjuntar datos a un archivo de registro utilizando Node.js y está funcionando bien, pero no va a la siguiente línea. \ n no parece estar funcionando en mi función a continuación. ¿Alguna sugerencia? GraciasNueva línea en 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

¿Está en Windows/usando un editor de texto basado en Windows para ver su archivo, y por lo tanto necesita un par CRLF, '\ r \ n'? – Phrogz

Respuesta

83

Parece que se está ejecutando esto en Windows (dada su ruta de archivo H://log.txt).

Intente utilizar \r\n en lugar de solo \n.

Honestamente, \n está bien; probablemente esté viendo el archivo de registro en el bloc de notas u otra cosa que no represente nuevas líneas que no sean de Windows. Intente abrirlo en un visor/editor diferente (por ejemplo, Wordpad).

+1

estaba viendo en el bloc de notas :) – FacePalm

35

Use la constante os.EOL en su lugar.

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) Tenga en cuenta que ya que node.js puede ejecutarse en muchos entornos diferentes, es posible mover su aplicación desde, por ejemplo, un entorno de Windows a uno de Linux. eso significa que si su aplicación está agregando registros usando 'os.EOL', tendrá algunas líneas que terminan en'/r/n' (desde el momento en que la aplicación se ejecutó en Windows) y luego tendrá filas que terminan con '/ n' (cuando la aplicación se ejecuta en Linux). Esto tiene el potencial de causar algunos problemas, especialmente si hay un análisis automático de los archivos de registro en su lugar. Decidí usar '/ n'. – Sharky

+1

(2/2) Sin embargo, superé tu respuesta porque sería la correcta, si viviéramos en un mundo perfectamente regulado. – Sharky

+0

Uso Linux, pero me gustó este enfoque, ya que podría querer la portabilidad en el futuro. – sdkks