diff --git a/lib/nodejs/test/client.js b/lib/nodejs/test/client.js
index 1d137ff..617039b 100644
--- a/lib/nodejs/test/client.js
+++ b/lib/nodejs/test/client.js
@@ -29,7 +29,7 @@
   require("./test_driver").ThriftTestDriverPromise;
 const SecondService = require(`./${helpers.genPath}/SecondService`);
 
-const program = require("commander");
+const { program } = require("commander");
 
 program
   .option(
@@ -49,7 +49,7 @@
   .option("--ssl", "use SSL transport")
   .option("--callback", "test with callback style functions")
   .option(
-    "-t, --type <type>",
+    "--type <type>",
     "Select server type (http|multiplex|tcp|websocket)",
     "tcp",
   )
@@ -57,26 +57,27 @@
   .option("--es5", "Use es5 code")
   .parse(process.argv);
 
-const host = program.host;
-const port = program.port;
-const domainSocket = program.domainSocket;
-const ssl = program.ssl;
-let type = program.type;
+const opts = program.opts();
+const host = opts.host;
+const port = opts.port;
+const domainSocket = opts.domainSocket;
+const ssl = opts.ssl;
+let type = opts.type;
 
 /* for compatibility with cross test invocation for http transport testing */
-if (program.transport === "http") {
-  program.transport = "buffered";
+if (opts.transport === "http") {
+  opts.transport = "buffered";
   type = "http";
 }
 
-if (program.transport === "websocket") {
-  program.transport = "buffered";
+if (opts.transport === "websocket") {
+  opts.transport = "buffered";
   type = "websocket";
 }
 
 const options = {
-  transport: helpers.transports[program.transport],
-  protocol: helpers.protocols[program.protocol],
+  transport: helpers.transports[opts.transport],
+  protocol: helpers.protocols[opts.protocol],
 };
 
 if (type === "http" || type === "websocket") {
@@ -101,10 +102,8 @@
 
 let connection;
 let client;
-const testDriver = program.callback
-  ? ThriftTestDriver
-  : ThriftTestDriverPromise;
-if (helpers.ecmaMode === "es6" && program.callback) {
+const testDriver = opts.callback ? ThriftTestDriver : ThriftTestDriverPromise;
+if (helpers.ecmaMode === "es6" && opts.callback) {
   console.log("ES6 does not support callback style");
   process.exit(0);
 }
diff --git a/lib/nodejs/test/episodic-code-generation-test/client.js b/lib/nodejs/test/episodic-code-generation-test/client.js
index 631bfe7..cf014c2 100644
--- a/lib/nodejs/test/episodic-code-generation-test/client.js
+++ b/lib/nodejs/test/episodic-code-generation-test/client.js
@@ -22,7 +22,7 @@
 const assert = require("assert");
 const test = require("tape");
 const thrift = require("thrift");
-const program = require("commander");
+const { program } = require("commander");
 
 program
   .option("--host <host>", "Set the thrift server host to connect", "localhost")
@@ -32,8 +32,9 @@
 const Service = require("./gen-2/second-episode/gen-nodejs/Service");
 const Types = require("types-package/first-episode/Types_types");
 
-const host = program.host;
-const port = program.port;
+const opts = program.opts();
+const host = opts.host;
+const port = opts.port;
 
 const options = {
   transport: thrift.TBufferedTransport,
diff --git a/lib/nodejs/test/episodic-code-generation-test/server.js b/lib/nodejs/test/episodic-code-generation-test/server.js
index feca380..2b9a96d 100644
--- a/lib/nodejs/test/episodic-code-generation-test/server.js
+++ b/lib/nodejs/test/episodic-code-generation-test/server.js
@@ -20,7 +20,7 @@
  */
 
 const thrift = require("../../lib/thrift");
-const program = require("commander");
+const { program } = require("commander");
 
 program
   .option("--port <port>", "Set the thrift server port", 9090)
@@ -29,7 +29,8 @@
 const Service = require("./gen-2/second-episode/gen-nodejs/Service");
 const Types = require("types-package/first-episode/Types_types");
 
-const port = program.port;
+const opts = program.opts();
+const port = opts.port;
 
 const options = {
   transport: thrift.TBufferedTransport,
diff --git a/lib/nodejs/test/server.js b/lib/nodejs/test/server.js
index c8e7808..b56bea7 100644
--- a/lib/nodejs/test/server.js
+++ b/lib/nodejs/test/server.js
@@ -22,7 +22,7 @@
 const fs = require("fs");
 const path = require("path");
 const thrift = require("../lib/thrift");
-const program = require("commander");
+const { program } = require("commander");
 const helpers = require("./helpers");
 
 program
@@ -40,7 +40,7 @@
   .option("--port <port>", "Set thrift server port", 9090)
   .option("--domain-socket <path>", "Set thift server unix domain socket")
   .option(
-    "-t, --type <type>",
+    "--type <type>",
     "Select server type (http|multiplex|tcp|websocket)",
     "tcp",
   )
@@ -53,22 +53,23 @@
 const SecondService = require(`./${helpers.genPath}/SecondService`);
 const { ThriftTestHandler } = require("./test_handler");
 
-const port = program.port;
-const domainSocket = program.domainSocket;
-const ssl = program.ssl;
+const opts = program.opts();
+const port = opts.port;
+const domainSocket = opts.domainSocket;
+const ssl = opts.ssl;
 
-let type = program.type;
-if (program.transport === "http") {
-  program.transport = "buffered";
+let type = opts.type;
+if (opts.transport === "http") {
+  opts.transport = "buffered";
   type = "http";
-} else if (program.transport === "websocket") {
-  program.transport = "buffered";
+} else if (opts.transport === "websocket") {
+  opts.transport = "buffered";
   type = "websocket";
 }
 
 let options = {
-  transport: helpers.transports[program.transport],
-  protocol: helpers.protocols[program.protocol],
+  transport: helpers.transports[opts.transport],
+  protocol: helpers.protocols[opts.protocol],
 };
 
 if (type === "http" || type === "websocket") {
