'Error when I kick npm install in wsl2 ubuntu

When I run npm install, this error always happens in my project. Back then, I never found this error on any machine. But, this is my first try on WSL2 Ubuntu. Here is the error.

npm ERR! code 1
npm ERR! path /home/my-username/my-project/node_modules/node-sass
npm ERR! command failed
npm ERR! command sh -c node scripts/build.js
npm ERR! Building: /home/my-username/.nvm/versions/node/v17.0.1/bin/node /home/my-username/my-project/node_modules/node-gyp/bin/node-gyp.js rebuild --verbose --libsass_ext= --libsass_cflags= --libsass_ldflags= --libsass_library=
npm ERR! gyp info it worked if it ends with ok
npm ERR! gyp verb cli [
npm ERR! gyp verb cli   '/home/my-username/.nvm/versions/node/v17.0.1/bin/node',
npm ERR! gyp verb cli   '/home/my-username/my-project/node_modules/node-gyp/bin/node-gyp.js',
npm ERR! gyp verb cli   'rebuild',
npm ERR! gyp verb cli   '--verbose',
npm ERR! gyp verb cli   '--libsass_ext=',
npm ERR! gyp verb cli   '--libsass_cflags=',
npm ERR! gyp verb cli   '--libsass_ldflags=',
npm ERR! gyp verb cli   '--libsass_library='
npm ERR! gyp verb cli ]
npm ERR! gyp info using [email protected]
npm ERR! gyp info using [email protected] | linux | x64
npm ERR! gyp verb command rebuild []
npm ERR! gyp verb command clean []
npm ERR! gyp verb clean removing "build" directory
npm ERR! gyp verb command configure []
npm ERR! gyp verb check python checking for Python executable "python2" in the PATH
npm ERR! gyp verb `which` failed Error: not found: python2
npm ERR! gyp verb `which` failed     at getNotFoundError (/home/my-username/my-project/node_modules/node-gyp/node_modules/which/which.js:13:12)
npm ERR! gyp verb `which` failed     at F (/home/my-username/my-project/node_modules/node-gyp/node_modules/which/which.js:68:19)
npm ERR! gyp verb `which` failed     at E (/home/my-username/my-project/node_modules/node-gyp/node_modules/which/which.js:80:29)
npm ERR! gyp verb `which` failed     at /home/my-username/my-project/node_modules/node-gyp/node_modules/which/which.js:89:16
npm ERR! gyp verb `which` failed     at /home/my-username/my-project/node_modules/isexe/index.js:42:5
npm ERR! gyp verb `which` failed     at /home/my-username/my-project/node_modules/isexe/mode.js:8:5
npm ERR! gyp verb `which` failed     at FSReqCallback.oncomplete (node:fs:198:21)
npm ERR! gyp verb `which` failed  python2 Error: not found: python2
npm ERR! gyp verb `which` failed     at getNotFoundError (/home/my-username/my-project/node_modules/node-gyp/node_modules/which/which.js:13:12)
npm ERR! gyp verb `which` failed     at F (/home/my-username/my-project/node_modules/node-gyp/node_modules/which/which.js:68:19)
npm ERR! gyp verb `which` failed     at E (/home/my-username/my-project/node_modules/node-gyp/node_modules/which/which.js:80:29)
npm ERR! gyp verb `which` failed     at /home/my-username/my-project/node_modules/node-gyp/node_modules/which/which.js:89:16
npm ERR! gyp verb `which` failed     at /home/my-username/my-project/node_modules/isexe/index.js:42:5
npm ERR! gyp verb `which` failed     at /home/my-username/my-project/node_modules/isexe/mode.js:8:5
npm ERR! gyp verb `which` failed     at FSReqCallback.oncomplete (node:fs:198:21) {
npm ERR! gyp verb `which` failed   code: 'ENOENT'
npm ERR! gyp verb `which` failed }
npm ERR! gyp verb check python checking for Python executable "python" in the PATH
npm ERR! gyp verb `which` failed Error: not found: python
npm ERR! gyp verb `which` failed     at getNotFoundError (/home/my-username/my-project/node_modules/node-gyp/node_modules/which/which.js:13:12)
npm ERR! gyp verb `which` failed     at F (/home/my-username/my-project/node_modules/node-gyp/node_modules/which/which.js:68:19)
npm ERR! gyp verb `which` failed     at E (/home/my-username/my-project/node_modules/node-gyp/node_modules/which/which.js:80:29)
npm ERR! gyp verb `which` failed     at /home/my-username/my-project/node_modules/node-gyp/node_modules/which/which.js:89:16
npm ERR! gyp verb `which` failed     at /home/my-username/my-project/node_modules/isexe/index.js:42:5
npm ERR! gyp verb `which` failed     at /home/my-username/my-project/node_modules/isexe/mode.js:8:5
npm ERR! gyp verb `which` failed     at FSReqCallback.oncomplete (node:fs:198:21)
npm ERR! gyp verb `which` failed  python Error: not found: python
npm ERR! gyp verb `which` failed     at getNotFoundError (/home/my-username/my-project/node_modules/node-gyp/node_modules/which/which.js:13:12)
npm ERR! gyp verb `which` failed     at F (/home/my-username/my-project/node_modules/node-gyp/node_modules/which/which.js:68:19)
npm ERR! gyp verb `which` failed     at E (/home/my-username/my-project/node_modules/node-gyp/node_modules/which/which.js:80:29)
npm ERR! gyp verb `which` failed     at /home/my-username/my-project/node_modules/node-gyp/node_modules/which/which.js:89:16
npm ERR! gyp verb `which` failed     at /home/my-username/my-project/node_modules/isexe/index.js:42:5
npm ERR! gyp verb `which` failed     at /home/my-username/my-project/node_modules/isexe/mode.js:8:5
npm ERR! gyp verb `which` failed     at FSReqCallback.oncomplete (node:fs:198:21) {
npm ERR! gyp verb `which` failed   code: 'ENOENT'
npm ERR! gyp verb `which` failed }
npm ERR! gyp ERR! configure error
npm ERR! gyp ERR! stack Error: Can't find Python executable "python", you can set the PYTHON env variable.
npm ERR! gyp ERR! stack     at PythonFinder.failNoPython (/home/my-username/my-project/node_modules/node-gyp/lib/configure.js:484:19)
npm ERR! gyp ERR! stack     at PythonFinder.<anonymous> (/home/my-username/my-project/node_modules/node-gyp/lib/configure.js:406:16)
npm ERR! gyp ERR! stack     at F (/home/my-username/my-project/node_modules/node-gyp/node_modules/which/which.js:68:16)
npm ERR! gyp ERR! stack     at E (/home/my-username/my-project/node_modules/node-gyp/node_modules/which/which.js:80:29)
npm ERR! gyp ERR! stack     at /home/my-username/my-project/node_modules/node-gyp/node_modules/which/which.js:89:16
npm ERR! gyp ERR! stack     at /home/my-username/my-project/node_modules/isexe/index.js:42:5
npm ERR! gyp ERR! stack     at /home/my-username/my-project/node_modules/isexe/mode.js:8:5
npm ERR! gyp ERR! stack     at FSReqCallback.oncomplete (node:fs:198:21)
npm ERR! gyp ERR! System Linux 5.10.16.3-microsoft-standard-WSL2
npm ERR! gyp ERR! command "/home/my-username/.nvm/versions/node/v17.0.1/bin/node" "/home/my-username/my-project/node_modules/node-gyp/bin/node-gyp.js" "rebuild" "--verbose" "--libsass_ext=" "--libsass_cflags=" "--libsass_ldflags=" "--libsass_library="
npm ERR! gyp ERR! cwd /home/my-username/my-project/node_modules/node-sass
npm ERR! gyp ERR! node -v v17.0.1
npm ERR! gyp ERR! node-gyp -v v3.8.0
npm ERR! gyp ERR! not ok
npm ERR! Build failed with error code: 1

I have no idea what happens, I think my dev environment in WSL2 is perfect. But poor me, I was wrong. Please help me. Is there anyone who got this error too and already found the solution?



Solution 1:[1]

The solution that really worked is using nodejs version 14. I don't know why, but quasar cannot work with nodejs version 16 and newer, At least at this time.

Solution 2:[2]

Read the logs. This is a node-gyp error, which builds NPM packages when installed. On Linux, it requires GCC and Python (2). You need to have Python installed. If you already do, check if it's Python 2.
For Windows users around here, it needs Visual Studio (MVSC) and Python as well.
See the set up guide on their GitHub repo:

Quick solution for Ubuntu (as stated in OP)

Try installing the required packages:

sudo apt install python3 python-is-python3 gcc

Not-so-important notes

node-sass is depreceated, so you could perhaps try using sass.

Solution 3:[3]

I was having similar issue on wsl2 ubuntu 20.04.
Can't find Python executable "python", you can set the PYTHON env variable.

When I ran yarn install command in terminal
which is connected to wsl2 ubuntu,

  1. I was having an internet connection error. I solved it as follows:
    sudo nano /etc/resolv.conf
    and changed the nameserver to 8.8.8.8
    (This may be a temporary solution that needs to be done after reopen ubuntu)

  2. and then solved the python2 issue as follows:
    sudo apt install python2

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 ImBIOS
Solution 2
Solution 3 Muhammed