Saya mencoba Menambahkan data ke file Log menggunakan Node.js dan itu berfungsi dengan baik tetapi tidak akan ke baris berikutnya. \n
sepertinya tidak berfungsi dalam fungsi saya di bawah. Ada saran?
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');
});
});
});
}
javascript
node.js
newline
DaBears
sumber
sumber
\r\n
,?Jawaban:
Sepertinya Anda menjalankan ini di Windows (mengingat
H://log.txt
jalur file Anda ).Coba gunakan
\r\n
alih-alih hanya\n
.Jujur saja,
\n
baik-baik saja; Anda mungkin melihat file log di notepad atau sesuatu yang lain yang tidak membuat baris baru non-Windows. Coba buka di penampil / editor yang berbeda (misalnya Wordpad).sumber
Gunakan konstanta os.EOL sebagai gantinya.
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'); }); }); }); }
sumber
os.EOL
Anda akan memiliki beberapa baris yang diakhiri dengan/r/n
(dari saat aplikasi berjalan di windows) dan kemudian Anda akan memiliki baris yang diakhiri dengan/n
(ketika aplikasi berjalan di linux). Hal ini berpotensi menimbulkan masalah terutama jika penguraian otomatis file log ada. Saya memutuskan untuk hanya menggunakan/n
.fs.write
denganos.EOL
menjadi biner. Saya biasapkg
membuat biner untuk Windows. Ketika dieksekusi, catatan tertulis terakhir memiliki baris baru yang ditambahkan padanya (seperti yang diharapkan); Tapi, sepertinya suguhan aplikasi Windows lain itu adalah rekor baru. Saya mencari solusi.gunakan
\r\n
kombinasi untuk menambahkan baris baru di node jsvar stream = fs.createWriteStream("udp-stream.log", {'flags': 'a'}); stream.once('open', function(fd) { stream.write(msg+"\r\n"); });
sumber