Upgrading Node and Node-npm
-
I am trying to install a npm package on my Onion Omega2+ to use WebSocket Tunneling. To install it I used a simple npm install code: node --max_old_space_size=64 $(which npm) install wstunnel. First, I got an npm warning that node-uuid is version 3.4.0 and needs to be upgraded to at least 7 but I upgraded it right before. Next I get the following set of errors that I have put at the bottom. I am unsure as to where to go from here. This npm command runs smoothly on my WSL Ubuntu, azur VM and even my raspberry pi3 but when I tried updating npm and node to newer versions but was unsuccessful. Any help would be much appreciated, thanks.
gyp ERR! UNCAUGHT EXCEPTION
gyp ERR! stack TypeError: Object.fromEntries is not a function
gyp ERR! stack at Object.<anonymous> (/root/node_modules/@npmcli/fs/lib/fs.js:6:23)
gyp ERR! stack at Module._compile (module.js:652:30)
gyp ERR! stack at Object.Module._extensions..js (module.js:663:10)
gyp ERR! stack at Module.load (module.js:565:32)
gyp ERR! stack at tryModuleLoad (module.js:505:12)
gyp ERR! stack at Function.Module._load (module.js:497:3)
gyp ERR! stack at Module.require (module.js:596:17)
gyp ERR! stack at require (internal/module.js:11:18)
gyp ERR! stack at Object.<anonymous> (/root/node_modules/@npmcli/fs/lib/index.js:2:6)
gyp ERR! stack at Module._compile (module.js:652:30)
gyp ERR! System Linux 4.14.81
gyp ERR! command "/usr/bin/node" "/root/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /root/node_modules/bufferutil
gyp ERR! node -v v8.10.0
gyp ERR! node-gyp -v v9.3.1
gyp ERR! Node-gyp failed to build your package.
gyp ERR! Try to update npm and/or node-gyp and if it does not help file an issue with the package author.
npm WARN root@1.0.0 No description
npm WARN root@1.0.0 No repository field.npm ERR! code ELIFECYCLE
npm ERR! errno 7
npm ERR! bufferutil@4.0.7 install:node-gyp-build
npm ERR! Exit status 7
npm ERR!
npm ERR! Failed at the bufferutil@4.0.7 install script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.npm ERR! A complete log of this run can be found in:
npm ERR! /root/.npm/_logs/2023-05-31T19_28_02_902Z-debug.log
-
@santi29051 Looks to me that npm is trying to download some dependencies and is failing. The message "No repository field." I expect is because the script is determining what to download based upon the detected OS. Have you checked wstunnel is compatible with OpenWrt<version>? I had expected there would be a memory issue, but your logging does not report that. Perhaps refer to the documentation regarding nodejs https://docs.onion.io/omega2-docs/installing-and-using-nodejs.html
-
@crispyoz I have not found ant specifics talking about WS tunnel for OpenWrt. I found the code to be used from github here: https://github.com/mhzed/wstunnel. I have been looking at the documentation for nodejs but haven't found anything too useful. I am still very new to both the Onion and programing and developing as a whole so I'm not even sure what to look for.
-
@santi29051 iirc node-gyp-build tries to compile node packages directly on your device. As opposed to just downloading javascript files.
Check out this docs article: http://docs.onion.io/omega2-docs/node-red-article.html#installing-node-packages-that-require-compilation
Note that you'll need more storage space - so an omega2 pro or extending the omega's storage (also available on the docs)
-
@Lazar-Demin Even after following the instructions for node packages that need compiling, I still get the same error message when trying to run node --max_old_space_size=512 $(which npm) install wstunnel. Any other possible solutions or suggestions?
-
@santi29051 this line in the error message caught my attention:
gyp ERR! stack TypeError: Object.fromEntries is not a function
I suggest checking if the wstunnel package depends on a specific minimum node version.
-
@Lazar-Demin If i am not mistaken from the package-lock.json file it has a minimum node requirement of 10.12. Is there a way to update the node on the Onion to that? I tried installing NVM but even after getting it in the onion the command was never recognized