Con il nodo, sto cercando di raccogliere i dati utente da un server LDAP e quindi di scrivere tali dati in un file JSON. Sto usando il seguente codice per fare questo:In Node.js che utilizza i risultati JSON.stringify nell'errore 'process out of memory'
fs.writeFile('data.json', JSON.stringify(data, null, 4));
Il problema è il metodo JSON.stringify
sta causando il seguente errore:
FATAL ERROR: JS Allocation failed - process out of memory
So che il problema è con JSON.stringify
perché se uso console.log
piuttosto che fs.writeFile
Ho lo stesso errore.
Sto provando a scrivere molti dati (oltre 500 voci nel database LDAP). Qualcuno sa come posso farlo funzionare? Ecco il codice per intero:
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));
});
});
Hai pensato che ... hai esaurito la memoria? :) I.e. i dati sono troppo grandi? – freakish
@freakish Non sono sicuro che sia così perché so che qualcun altro è stato in grado di scrivere i dati su un file. Tuttavia, quando gli ho spiegato che stavo ottenendo questo errore, ha detto che non si era imbattuto in questo problema. C'è un modo per aumentare la quantità di memoria disponibile? –
Sì, compra più RAM. :) O uccidi altre app. L'altra persona ha fatto questo sulla stessa macchina? In caso contrario, non è possibile confrontarlo. Penso che sia così semplice: sei fuori dalla memoria. Per gestire questo problema (senza ottenere effettivamente più RAM), è necessario dividere i dati in parti più piccole e gestire un pezzo alla volta. – freakish