如何在Node.js中附加到新行

DaB*_*ars 80 javascript newline node.js

我正在尝试使用Node.js将数据附加到日志文件,并且工作正常,但它不会进入下一行. \n似乎没有在我的功能下面工作.有什么建议?

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');
    });
   });
  });
 }
Run Code Online (Sandbox Code Playgroud)

Rob*_*ska 139

看起来你在Windows上运行它(给定你的H://log.txt文件路径).

尝试使用\r\n而不仅仅是\n.

老实说,\n很好; 您可能正在查看记事本中的日志文件或其他不呈现非Windows换行符的日志文件.尝试在不同的查看器/编辑器(例如写字板)中打开它.

  • 在记事本中查看:) (2认同)

小智 73

请改用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');
    });
   });
  });
 }
Run Code Online (Sandbox Code Playgroud)

  • (1/2)请注意,由于node.js可以在许多不同的环境中运行,因此可以将应用程序从Windows环境移动到Linux环境.这意味着如果您的应用程序使用`os.EOL`附加日志,您将有一些以`/ r/n`结尾的行(从应用程序在Windows上运行时),然后您将有以`/ n'结尾的行(当app在linux上运行时).这有可能带来一些麻烦,特别是如果有任何自动解析日志文件的话.我决定只使用`/ n`. (11认同)
  • (2/2) 尽管如此,我还是赞成你的答案,因为如果我们生活在一个完美监管的世界里,这将是正确的答案。 (3认同)

Cod*_*ker 5

使用\r\n组合在节点 js 中追加新行

  var stream = fs.createWriteStream("udp-stream.log", {'flags': 'a'});
  stream.once('open', function(fd) {
    stream.write(msg+"\r\n");
  });
Run Code Online (Sandbox Code Playgroud)


小智 5

或者,您可以使用fs.appendFile方法

let content = 'some text';
content += "\n";
fs.appendFile("helloworld.txt", content, (err) => {
    return console.log(err);
});
Run Code Online (Sandbox Code Playgroud)