monero-ts
monero-ts copied to clipboard
Web Worker Node Issue
Hi I am running this code from the demo in node:
const monerojs = require("monero-javascript");
main();
async function main() {
let daemon = await monerojs.connectToDaemonRpc("https://stagenet.xmr.ditatompel.com")
console.log(daemon)
}
When I execute the above code I get this error stack :
node:internal/errors:477 ErrorCaptureStackTrace(err); ^
TypeError [ERR_INVALID_URL_SCHEME]: The URL must be of scheme file
at new NodeError (node:internal/errors:387:5)
at Object.fileURLToPath (node:internal/url:1436:11)
at new Worker (C:\Users\Donely\Desktop\giftmoneronodedemo\node_modules\web-worker\cjs\node.js:108:19)
at Function.getWorker (C:\Users\Donely\Desktop\giftmoneronodedemo\node_modules\monero-javascript\src\main\js\common\LibraryUtils.js:165:30)
at Function.invokeWorker (C:\Users\Donely\Desktop\giftmoneronodedemo\node_modules\monero-javascript\src\main\js\common\LibraryUtils.js:207:37)
at Function.connect (C:\Users\Donely\Desktop\giftmoneronodedemo\node_modules\monero-javascript\src\main\js\daemon\MoneroDaemonRpc.js:1472:24)
at Function._connectToDaemonRpc (C:\Users\Donely\Desktop\giftmoneronodedemo\node_modules\monero-javascript\src\main\js\daemon\MoneroDaemonRpc.js:109:59)
at Object.module.exports.connectToDaemonRpc (C:\Users\Donely\Desktop\giftmoneronodedemo\node_modules\monero-javascript\index.js:133:88)
at main (C:\Users\Donely\Desktop\giftmoneronodedemo\offline_wallet_generator.js:5:31)
at Object.
I would like to use a remote public node instead of a local one for this example. Any help would be much appreciated.
It's failing to get the web worker for some reason, citing an invalid local path being used.
Have you npm install
ed dependencies?
You can try with the web worker disabled:
let daemon = await monerojs.connectToDaemonRpc({uri: "https://stagenet.xmr.ditatompel.com", proxyToWorker: false});
Also, can you print the worker path being used? i.e.
console.log("Worker path: " + monerojs.LibraryUtils.WORKER_DIST_PATH);
Produces output like:
Worker path: /Users/woodser/git/monero-javascript/src/main/js/common/MoneroWebWorker.js
Disabling webworker made the code work for me.
I have ran yarn install also but I still have the issue.
The worker path is:
Worker path: C:\Users\Donely\Desktop\giftmoneronodedemo\node_modules\monero-javascript\src\main\js\common\MoneroWebWorker.js .
Thanks for the quick response.
Does the file exist at path C:\Users\Donely\Desktop\giftmoneronodedemo\node_modules\monero-javascript\src\main\js\common\MoneroWebWorker.js
?
Yes. I believe the file does exist. When I run ls in the folder I get: ` Directory: C:\Users\Donely\Desktop\giftmoneronodedemo\node_modules\monero-javascript\src\main\js\common
Mode LastWriteTime Length Name
-a---- 8/25/2022 12:25 AM 33958 biginteger.js -a---- 8/25/2022 12:25 AM 779 Filter.js -a---- 8/25/2022 12:25 AM 48977 GenUtils.js -a---- 8/25/2022 12:25 AM 17786 HttpClient.js -a---- 8/25/2022 12:25 AM 8407 LibraryUtils.js -a---- 8/25/2022 12:25 AM 18362 MoneroConnectionManager.js -a---- 8/25/2022 12:25 AM 378 MoneroConnectionManagerListener.js -a---- 8/25/2022 12:25 AM 665 MoneroError.js -a---- 8/25/2022 12:25 AM 15695 MoneroRpcConnection.js -a---- 8/25/2022 12:25 AM 1015 MoneroRpcError.js -a---- 8/25/2022 12:25 AM 17244 MoneroUtils.js -a---- 8/25/2022 12:25 AM 35728 MoneroWebWorker.js -a---- 8/25/2022 12:25 AM 1147 SslOptions.js -a---- 8/25/2022 12:25 AM 1192 TaskLooper.js -a---- 8/25/2022 12:25 AM 1945 ThreadPool.js`
I am on windows 10 if that helps. I could also get you the node version and more system info if that is useful.
If I add these lines of code to the top of my code it seems to work :
if (monerojs.LibraryUtils.WORKER_DIST_PATH.indexOf("C:") == 0 && monerojs.LibraryUtils.WORKER_DIST_PATH.indexOf("file://") == -1) monerojs.LibraryUtils.WORKER_DIST_PATH = "file://"+monerojs.LibraryUtils.WORKER_DIST_PATH;
I found this code here
Thanks, I've added similar logic in release v0.7.4 to prefix "C:" paths with "file://".
Thank you so much for the help and the work you do for this project!