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 makeError = require('../util/MakeError');
const makePlainError = require('../util/MakePlainError');
/** /**
* Helper class for sharded clients spawned as a child process, such as from a ShardingManager * Helper class for sharded clients spawned as a child process, such as from a ShardingManager
@@ -103,7 +104,7 @@ class ShardClientUtil {
try { try {
this._respond('eval', { _eval: message._eval, _result: this.client._eval(message._eval) }); this._respond('eval', { _eval: message._eval, _result: this.client._eval(message._eval) });
} catch (err) { } 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 Shard = require('./Shard');
const Collection = require('../util/Collection'); 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 * 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) { if (message._sFetchProp) {
this.fetchClientValues(message._sFetchProp) this.fetchClientValues(message._sFetchProp)
.then(results => shard.send({ _sFetchProp: message._sFetchProp, _result: results })) .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) { } else if (message._sEval) {
this.broadcastEval(message._sEval) this.broadcastEval(message._sEval)
.then(results => shard.send({ _sEval: message._sEval, _result: results })) .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) { 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.name = obj.name;
err.columnNumber = obj.columnNumber;
err.stack = obj.stack; err.stack = obj.stack;
return err; 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;
};