diff --git a/lib/net.js b/lib/net.js index 5e653c61d2106c..4f1395ec2ed73a 100644 --- a/lib/net.js +++ b/lib/net.js @@ -912,8 +912,9 @@ Socket.prototype.connect = function(options, cb) { this._sockname = null; } - var pipe = !!options.path; - debug('pipe', pipe, options.path); + const path = options.path; + var pipe = !!path; + debug('pipe', pipe, path); if (!this._handle) { this._handle = pipe ? new Pipe() : new TCP(); @@ -930,7 +931,10 @@ Socket.prototype.connect = function(options, cb) { this.writable = true; if (pipe) { - connect(this, options.path); + if (typeof path !== 'string') { + throw new TypeError('"path" option must be a string: ' + path); + } + connect(this, path); } else { lookupAndConnect(this, options); } diff --git a/test/parallel/test-net-better-error-messages-path.js b/test/parallel/test-net-better-error-messages-path.js index f4d00c7aebf055..5f6203a5c2fe45 100644 --- a/test/parallel/test-net-better-error-messages-path.js +++ b/test/parallel/test-net-better-error-messages-path.js @@ -2,12 +2,21 @@ const common = require('../common'); const net = require('net'); const assert = require('assert'); -const fp = '/tmp/fadagagsdfgsdf'; -const c = net.connect(fp); -c.on('connect', common.mustNotCall()); +{ + const fp = '/tmp/fadagagsdfgsdf'; + const c = net.connect(fp); -c.on('error', common.mustCall(function(e) { - assert.strictEqual(e.code, 'ENOENT'); - assert.strictEqual(e.message, `connect ENOENT ${fp}`); -})); + c.on('connect', common.mustNotCall()); + c.on('error', common.mustCall(function(e) { + assert.strictEqual(e.code, 'ENOENT'); + assert.strictEqual(e.message, `connect ENOENT ${fp}`); + })); +} + +{ + assert.throws( + () => net.createConnection({ path: {} }), + /"path" option must be a string: \[object Object]/ + ); +}