Con nodo Estoy tratando de recopilar datos de usuario de un servidor LDAP y luego escribir esos datos en un archivo JSON. Estoy utilizando el siguiente código para hacer esto:En Node.js usando JSON.stringify resultados en el error 'proceso sin memoria'
fs.writeFile('data.json', JSON.stringify(data, null, 4));
El problema es el método JSON.stringify
está causando el error siguiente:
FATAL ERROR: JS Allocation failed - process out of memory
Sé que el problema es con JSON.stringify
porque si uso console.log
en lugar de fs.writeFile
Me sale el mismo error.
Estoy tratando de escribir una gran cantidad de datos (más de 500 entradas en la base de datos LDAP). ¿Alguien sabe cómo puedo hacer que esto funcione? Aquí está el código completo:
var ldap = require('ldapjs');
var util = require('util');
var fs = require('fs');
var client = ldap.createClient({
url: '************'
});
client.bind('CN=**********,OU=Users,OU=LBi UK,OU=UK,DC=********,DC=local', '*********', function(err) {
if (err) {
console.log(err.name);
}
});
// taken from http://ldapjs.org/client.html
client.search('OU=Users,OU=******,OU=UK,DC=******,DC=local', {
scope: 'sub',
filter: 'objectClass=organizationalPerson',
attributes: ['givenName', 'dn', 'sn', 'title', 'department', 'thumbnailPhoto', 'manager']
// filter by organizational person
}, function(err, res) {
if (err) {
console.log(err.name);
}
var limit = 1;
var data = {"directory": []};
res.on('searchEntry', function(entry) {
var obj = {};
entry.attributes.forEach(function (attribute) {
var value;
if (attribute.type === 'thumbnailPhoto') {
value = attribute.buffers[0];
} else {
value = attribute.vals[0];
}
obj[attribute.type] = value;
});
data.directory.push(obj);
});
res.on('error', function(err) {
console.log('error: ' + err.message);
});
res.on('end', function(result) {
fs.writeFile('data.json', JSON.stringify(data, null, 4));
});
});
¿Consideras que ... te has quedado sin memoria? :) Es decir la información es demasiado grande? – freakish
@freakish No estoy seguro si ese es el caso porque sé que alguien más pudo escribir los datos en un archivo. Sin embargo, cuando le expliqué que estaba recibiendo este error, me dijo que no había encontrado este problema. ¿Hay alguna manera de aumentar la cantidad de memoria disponible? –
Sí, compre más RAM. :) O matar a otras aplicaciones. ¿La otra persona hizo esto en la misma máquina? Si no, entonces no puedes compararlo. Creo que esto es tan simple como eso: te has quedado sin memoria. Para manejar este problema (sin realmente obtener más RAM), necesita dividir los datos en piezas más pequeñas y manejar una pieza a la vez. – freakish