当我在 wsl2 中启动 npm 安装时出错 ubuntu

Error when I kick npm install in wsl2 ubuntu

当我运行 npm install 时,这个错误总是发生在我的项目中。那时,我从未在任何机器上发现过这个错误。但是,这是我第一次尝试 WSL2 Ubuntu。这是错误。

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 node-gyp@3.8.0
npm ERR! gyp info using node@17.0.1 | 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

我不知道发生了什么,我认为我在 WSL2 中的开发环境是完美的。但可怜的我,我错了。请帮我。有没有人也遇到这个错误并且已经找到了解决方案?

阅读日志。这是一个 node-gyp 错误,它会在安装时构建 NPM 包。在 Linux 上,它需要 GCC 和 Python (2)。 您需要安装 Python。如果您已经这样做,请检查它是否 Python 2.
对于这里的 Windows 用户,它还需要 Visual Studio (MVSC) 和 Python。
请参阅其 GitHub 存储库中的设置指南:

Ubuntu 的快速解决方案(如 OP 中所述)

尝试安装所需的包:

sudo apt install python3 python-is-python3 gcc

不太重要的笔记

node-sass 已弃用,因此您或许可以尝试使用 sass.

我在 wsl2 ubuntu 20.04.
上遇到了类似的问题 Can't find Python executable "python", you can set the PYTHON env variable.

当我在终端运行 yarn install命令时
连接到 wsl2 ubuntu,

  1. 我遇到了互联网连接错误。 我是这样解决的:
    sudo nano /etc/resolv.conf
    并将 nameserver 更改为 8.8.8.8
    (这可能是临时解决方案,需要在重新打开后进行ubuntu)

  2. 然后解决python2问题如下:
    sudo apt install python2

真正有效的解决方案是使用 nodejs 版本 14。我不知道为什么,但是 quasar 不能使用 nodejs 版本 16 和更新版本,至少目前是这样。