Workaround for npm install error on Lineageos 15.1

The fix.
npm install
fails in Termux on LineageOS 15.11 with the following error:
NPM ERR! Cannot read property 'length' of undefined
The issue originates from a bug in node. The affected module has implemented a workaround that you can manually apply to your npm installation to avoid the issue until the upstreams fix it properly.
To implement the workaround:
-
Open the file you need to patch in your editor2:
$EDITOR $PREFIX/lib/node_modules/npm/node_modules/worker-farm/lib/farm.js
-
Update line 5:
From:
, maxConcurrentWorkers : require('os').cpus().length
To:
, maxConcurrentWorkers : (require('os').cpus() || { length: 1 }).length
-
Replace the
1
in the code snippet above with the number of cores that your phone has and save the file. (For my Samsung S9+, I used 8 as it has an octa-core processor.)
That should fix the problem and you should be able to use npm again.
-
I did not encounter this error on my Nexus 5 with LineageOS 14.1. The phone exhibiting the error is running LineageOS 15.1, Termux version 0.64, Node.js version 8.11.3 and npm version 5.6.0. ↩︎
-
If you get a command not found error at this step, it’s most likely because you haven’t specified a default editor to use in your shell configuration. To fix that and use a simple editor called nano as your default, execute the following command:
echo "export EDITOR='nano'" >> ~/.bashrc && source ~/.bashrc
. Replace.bashrc
with.zshrc
if you’re using zsh instead of bash as your shell. ↩︎