javascript - Node JS 中的内存错误 (node::smalloc::Alloc)

标签 javascript node.js fatal-error alloc

我是 Node Js 的新手,我构建了一个非常简单的服务器,它可以向我发送我请求的 zip 文件。一切正常,但在某些请求之后发生崩溃,我在终端上看到了此消息:

fatal error :node::smalloc::Alloc(v8::Handle、size_t、v8::ExternalArrayType) 内存不足

var http = require('http');
var url = require('url');
var fs = require('fs');

var port = 1337;


// create http server
var server = http.createServer(function (request, response) {

	var path = require('url').parse(request.url, true);
	console.log('requested ' + path.pathname);

	//get zipped resoures
	if (path.pathname == '/getzip') {
		console.log(request.url);
		var queryData = url.parse(request.url, true).query;
		if (queryData.name) {
			var filename = queryData.name;
			//open corrisponding file
			var zipFile = fs.readFileSync('packets/' + filename);
			response.writeHead(200, {
	   	    	'Content-Type': 'application/x-zip',
	   	    	'Content-disposition': 'attachment; filename=data.zip'
	  		});
	  		//send file in response
			response.end(zipFile);
		}
		else {
			response.writeHead(200, {'Content-Type': 'text/plain'});
	 		response.end('{error = "bad url"}');
		}
	}

}).listen(port);
server.timeout = 1000000;

你知道它是什么吗?这段代码看起来很简单。

最佳答案

您应该利用streams,而不是将整个文件读入内存。为此:

response.writeHead(200, {
  'Content-Type'        : 'application/x-zip',
  'Content-disposition' : 'attachment; filename=data.zip'
});
fs.createReadStream('packets/' + filename).pipe(response);

关于javascript - Node JS 中的内存错误 (node::smalloc::Alloc),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31856829/

相关文章:

ios - fatal error : unexpectedly found nil while unwrapping an Optional value while editing textfield in swift

javascript - 使用 dojo 移动和重新排序 div

javascript - GET 数据未通过 AJAX 调用发送

javascript - 具有绝对定位的工具提示元素被溢出的容器剪裁 : auto

prototype - javascript 库原型(prototype)函数没有一个接一个地执行

javascript - google-trends-api npm 找不到使用 browserify 的模块

Magento 1.7.0.2 fatal error : Call to a member function getAttributeCode() on a non-object in

javascript - 在命令行上运行 Node js文件时找不到模块

javascript - 有没有办法在 : $or clause with sequelize? 中包含数组

xcode - fatal error : unexpectedly found nil while unwrapping an Optional value in swift(SKProduct)