我创建了一个 Server.IO 应用,客户端连接的应用将从中请求数据。数据从zip文件中读取,并正确地将数据发送到客户端。
io.sockets.on('connection', function (socket) {
fs.readFile("myzip.zip", function(err, data) {
if (err) throw err;
socket.zip = new JSZip(data);
});
// when the client emits 'getdata', this listens and executes
socket.on('getdata', function(filename){
console.log(filename);
var data = socket.zip.file(filename + '.txt').asText()
console.log(data);
// return the data to the client-side
io.sockets.emit('updatedata', filename, data);
});
});
在客户端,我正在请求数据
var socket = io.connect(URL);
// on connection to server
socket.on('connect', function(){
socket.emit('getdata','data_file1');
socket.emit('getdata','data_file2');
socket.emit('getdata','data_file3');
});
socket.on('updatedata', function (filename, data) {
console.log('updatedata ' + filename);
$('#' + filename).append(data + '<br>');
});
但是有一些文本文件在尝试以正常的非调试模式读取时,似乎会导致NodeJS应用程序退出而没有错误消息或堆栈跟踪。
当我以node server.js
要执行的最后一行是var data = socket.zip.file(filename + '.txt').asText();
但是我还没弄清楚如何调试它,因为如果我在调试模式下运行这个应用程序,整个过程都会有效。
我使用调试模式node debug server.js
文本文件是简单的CSV文件,其中一些很小,有些很大,但文件大小似乎并不相关。这些文件也都是没有BOM的UTF8。
有关如何解决这个问题的想法或弄清楚它为何在调试模式下工作而不是其他方式?