Not specifing localIdentifier fails with another process running error
Opened this issue · 3 comments
When starting the app (see example below) without localIdentifier is fails to load:
const bs_local_args = {
key: "***",
// localIdentifier: "testing"
}Expected Behavior
It just loads.
Actual Behavior
It fails with LocalError: Either another browserstack local client is running on your machine or some server is listening on port 45691
Error: LocalError: Either another browserstack local client is running on your machine or some server is listening on port 45691
at /Users/Adriaan/node_modules/browserstack-local/lib/Local.js:65:20
at ChildProcess.exithandler (child_process.js:286:7)
at ChildProcess.emit (events.js:210:5)
at maybeClose (internal/child_process.js:1021:16)
at Process.ChildProcess._handle.onexit (internal/child_process.js:283:5) {
name: 'LocalError',
message: 'Either another browserstack local client is running on your machine or some server is listening on port 45691',
extra: undefined
Platform details
- browserstack-local-nodejs version: 1.4.5
- node version: 12.14.0
- os type and version: mac os x Catalina
Details
This is a minimal version of the bug:
const browserstack = require("browserstack-local");
const url = require("url");
const http = require("http");
const PORT = 8080;
(async () => {
http
.createServer(req => {
const { pathname } = url.parse(req.url);
console.log("Request:", pathname);
})
.listen(PORT, () => {
console.log("Started node server");
});
const bs_local = new browserstack.Local();
const bs_local_args = {
key: "***",
// localIdentifier: "testing"
};
bs_local.start(bs_local_args, function(error) {
if (error) return console.error("Error:", error);
console.log("Running BrowserStackLocal", bs_local.isRunning());
bs_local.stop(function() {
console.log("Stopped BrowserStackLocal");
});
});
})();Similar issue - force no longer seems to be effective at killing existing local connections.
Hi @adriaanvanrossum
Browserstack Local allows for only one instance of the binary(without local identifier). This includes any instance run by you using the terminal, language bindings or processes running in the background.
If you have run local tests via language bindings in the past, an instance may be running in the background if the driver process failed to quit.
If you have BrowserStack's Local app installed on your system, you will be required to uninstall the app and preferably restart before running the Local Binary.
@readikus the force parameter would only kill binary instances with the same local identifier and hence it won't work on binary instances that are initialized without a local identifier
ref: https://www.browserstack.com/local-testing/binary-params