Fix transmitting errors through IPC

This commit is contained in:
Schuyler Cebulskie
2016-09-27 02:40:29 -04:00
parent 9d3b7b49dd
commit 38366f627d
4 changed files with 13 additions and 5 deletions

View File

@@ -1,4 +1,5 @@
const makeError = require('../util/MakeError');
const makePlainError = require('../util/MakePlainError');
/**
* Helper class for sharded clients spawned as a child process, such as from a ShardingManager
@@ -103,7 +104,7 @@ class ShardClientUtil {
try {
this._respond('eval', { _eval: message._eval, _result: this.client._eval(message._eval) });
} catch (err) {
this._respond('eval', { _eval: message._eval, _error: err });
this._respond('eval', { _eval: message._eval, _error: makePlainError(err) });
}
}
}

View File

@@ -4,6 +4,7 @@ const EventEmitter = require('events').EventEmitter;
const Shard = require('./Shard');
const Collection = require('../util/Collection');
const makePlainError = require('../util/MakePlainError');
/**
* This is a utility class that can be used to help you spawn shards of your Client. Each shard is completely separate
@@ -58,11 +59,11 @@ class ShardingManager extends EventEmitter {
if (message._sFetchProp) {
this.fetchClientValues(message._sFetchProp)
.then(results => shard.send({ _sFetchProp: message._sFetchProp, _result: results }))
.catch(err => shard.send({ _sFetchProp: message._sFetchProp, _error: err }));
.catch(err => shard.send({ _sFetchProp: message._sFetchProp, _error: makePlainError(err) }));
} else if (message._sEval) {
this.broadcastEval(message._sEval)
.then(results => shard.send({ _sEval: message._sEval, _result: results }))
.catch(err => shard.send({ _sEval: message._sEval, _error: err }));
.catch(err => shard.send({ _sEval: message._sEval, _error: makePlainError(err) }));
}
});
}

View File

@@ -1,7 +1,6 @@
module.exports = function makeError(obj) {
const err = new Error(obj.message, obj.fileName, obj.lineNumber);
const err = new Error(obj.message);
err.name = obj.name;
err.columnNumber = obj.columnNumber;
err.stack = obj.stack;
return err;
};

View File

@@ -0,0 +1,7 @@
module.exports = function makePlainError(err) {
const obj = {};
obj.name = err.name;
obj.message = err.message;
obj.stack = err.stack;
return obj;
};