mirror of
https://github.com/nodejs/node.git
synced 2024-12-01 16:10:02 +01:00
net: improve socket.write() error message
Informative error messages are very important for developers and could possibly save hours of debugging and frustration. This improves the error message thrown when writing invalid data into a socket, by communicating what's expected compared to what the developer just tried to write. PR-URL: https://github.com/nodejs/node/pull/5981 Reviewed-By: Brian White <mscdex@mscdex.net> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
This commit is contained in:
parent
8dcb82db38
commit
ec49fc8229
@ -619,8 +619,10 @@ Socket.prototype.__defineGetter__('localPort', function() {
|
||||
|
||||
|
||||
Socket.prototype.write = function(chunk, encoding, cb) {
|
||||
if (typeof chunk !== 'string' && !(chunk instanceof Buffer))
|
||||
throw new TypeError('Invalid data');
|
||||
if (typeof chunk !== 'string' && !(chunk instanceof Buffer)) {
|
||||
throw new TypeError(
|
||||
'Invalid data, chunk must be a string or buffer, not ' + typeof chunk);
|
||||
}
|
||||
return stream.Duplex.prototype.write.apply(this, arguments);
|
||||
};
|
||||
|
||||
|
18
test/parallel/test-net-socket-write-error.js
Normal file
18
test/parallel/test-net-socket-write-error.js
Normal file
@ -0,0 +1,18 @@
|
||||
'use strict';
|
||||
|
||||
const common = require('../common');
|
||||
const assert = require('assert');
|
||||
const net = require('net');
|
||||
|
||||
const server = net.createServer().listen(common.PORT, connectToServer);
|
||||
|
||||
function connectToServer() {
|
||||
const client = net.createConnection(common.PORT, () => {
|
||||
assert.throws(() => {
|
||||
client.write(1337);
|
||||
}, /Invalid data, chunk must be a string or buffer, not number/);
|
||||
|
||||
client.end();
|
||||
})
|
||||
.on('end', () => server.close());
|
||||
}
|
Loading…
Reference in New Issue
Block a user