-
Notifications
You must be signed in to change notification settings - Fork 494
Closed
Description
I am unable to connect Firefox with the native client because the path to host.js in the run.sh script is not found.
This is the error message that I see in the browser console:
NS_ERROR_ILLEGAL_VALUE: Component returned failure code: 0x80070057 (NS_ERROR_ILLEGAL_VALUE) [nsINativeMessagingPortal.closeSession] [NativeMessaging.jsm:360](resource://gre/modules/NativeMessaging.jsm)
stderr output from native app com.add0n.node: node:internal/modules/cjs/loader:998
stderr output from native app com.add0n.node: throw err;
stderr output from native app com.add0n.node: ^
stderr output from native app com.add0n.node:
stderr output from native app com.add0n.node: Error: Cannot find module '${HOME}/host.js'
stderr output from native app com.add0n.node: at Module._resolveFilename (node:internal/modules/cjs/loader:995:15)
stderr output from native app com.add0n.node: at Module._load (node:internal/modules/cjs/loader:841:27)
stderr output from native app com.add0n.node: at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
stderr output from native app com.add0n.node: at node:internal/main/run_main_module:23:47 {
stderr output from native app com.add0n.node: code: 'MODULE_NOT_FOUND',
stderr output from native app com.add0n.node: requireStack: []
stderr output from native app com.add0n.node: }
stderr output from native app com.add0n.node:
stderr output from native app com.add0n.node: Node.js v18.12.1
OperationError: GDBus.Error:org.freedesktop.DBus.Error.UnknownMethod: Object does not exist at path “/org/freedesktop/portal/desktop/session/1_3947/firefox_com_add0n_node_4064532493”
(Note that I've replaced the actual path to my home directory with ${HOME} when copying the message)
It appears that Firefox starts the native client from $HOME as the working directory.
That leads to the script resolving the relative path host.js as $HOME/host.js.
I was able to fix this by applying the following tiny patch to run.sh:
#!/usr/bin/env bash
-/usr/bin/node host.js
+/usr/bin/node $(dirname "$0")/host.jsThis prefixes the host.js filename with the directory of the run.sh file — regardless of the working directory and regardless of the directory in which run.sh and the JavaScript files are located (as long as they are in the same location).
Metadata
Metadata
Assignees
Labels
No labels