bench.utils.CommandFailedError: npm install

Thank you so much @clarkej for the detailed suggestion. I haven’t made the time to try the solutions, but I hope I can fix my local environment this weekend.

As soon as I’m able to try this I’ll put a comment to let you all know if my problem was solved.

1 Like

@netchampfaris this is just to inform you ‘npm install’ currently errors with what seems to be this change

feat(Text Editor): Add table support by netchampfaris · Pull Request #6226 · frappe/frappe · GitHub

In yarn.lock possibly the quill dependency in reference to parchment is to blame?

npm install should not be used for installations. We use yarn, which uses yarn.lock to resolve dependencies.

@Arreis If you have yarn installed globally, bench will pick it up and use the yarn command to install dependencies.

To install yarn, you can do

npm install -g yarn

Thanks so much Faris and @Arreis please ignore my mistaken advice!

Install ran ok as expected only upon a full clean up after my failed installs -

To remove my bad install I had to rm -rf /home/frappe/bench-repo & /home/frappe/frappe-bench, but also too in my case /home/frappe/.local - this clue here made me realize this same ‘bad’ bench persisted with each install

frappe@ubuntu1804lts:~/frappe-bench$ which bench
/home/frappe/.local/bin/bench

With a healthy install one should expect to see this:

frappe@ubuntu1804lts:~/frappe-bench$ which bench
/usr/local/bin/bench

hope this helps

1 Like

Thank you all for the support, it seems like this does have to do with yarn after all.
After trying performing clean installs several times and making sure yarn was installed globally on my regular user without any luck I tried this ERPNext on Debian 9 installation guide which requires the creation of a new user under the sudo group and then I was able to initialize bench.

However, after checking the differences in the bash verbose, I noticed that when I init the bench with the new user it does use yarn to install the node packages, but when I try with my regular user it tries to use npm and I’m not sure why :confused:

verbose when trying to init bench with regular user ( the one that fails ):

Updating node libraries...
INFO:bench.utils:npm install
npm ERR! prepareGitDep 1> 
npm ERR! prepareGitDep > uws@9.14.0 install /home/arreis/.npm/_cacache/tmp/git-clone- 
03b762c7/node_modules/uws

verbose when trying to init bench with new user ( the one OK ):

Updating node packages...
INFO:bench.utils:yarn install
yarn install v1.13.0 
[1/4] Resolving packages...
[2/4] Fetching packages...
[3/4] Linking dependencies...
warning " > bootstrap@4.3.1" has unmet peer dependency "jquery@1.9.1 - 3".

Thankyou @Arreis, finally it is working by creating a new user.

You’re welcome @Khadija. I think that running ERPNext with a separated user is the recommended way although I’m not really sure why as I’m just getting started with this.

At the end, I was also able to make it work with my regular user by removing bench ( with pip ) , uninstalling yarn ( with npm ), purging nodejs (with apt) and then installing these packages again only this time I also installed yarn with apt instead of npm.

I’m not sure what was the exact step that made ERPNext recognize yarn with my regular user, but after I did this it started working.

Ok I will try this too then

Be aware that may depend on OS and/or host environment?

@BKM notes some caveats for eg Ubuntu 18.04 -ERPNext installation - #9 by bkm

Sorry but can you explain?

Just search to find BKM’s install experience notes with Ubuntu, CentOS and Debian versions, and also VPS host environments like the Google Cloud Platform (GCP).

For ERPNext to work on the various distinct platforms that are sought may demand some trial and error for a successful install, with clues and pointers that user’s report here.

One common issue has to do with permissions - the user account must have sudo privileges, but to install as root to overcome that causes problems too.

OK now I am trying to understand all this

Did you get this error after installing with a new user
INFO:bench.utils:setting up backups
crontabs/khadija/: fopen: Permission denied
INFO:bench.utils:setting up auto update
/var/spool/cron/: mkstemp: Permission denied
crontabs/khadija/: fopen: Permission denied
Bench frappe-bench initialized
/var/spool/cron/: mkstemp: Permission denied

I did not :/. By any chance did you initialized the bench with another user? If so, either change the files ownership for the whole bench folder recursively to the new user or remove the bench and start the process from scratch with the new one.

Yes that was the problem.

yarn global add yarn

it works

You can also use

sudo npm install -g yarn

1 Like

actually, it doesn’t work for me…

I ended up by manually install parchment on another directory then overwrite it.

mkdir ~/temp_parchment
cd ~/temp_parchment
npm init -y
npm install parchment@quilljs/parchment#487850f7eb030a6c4e750ba809e58b09444e0bdb

rm -Rf ~/frappe-bench/apps/frappe/node_modules/parchment
cp -Rf node_modules/parchment/ ~/frappe-bench/apps/frappe/node_modules

My problem is that the file frappe-bench/patches.txt is lack of line: bench.patches.v4.install_yarn #2