在已安装 WSL 的 Windows 11 的电脑上运行 npm 命令报 not found 的错误

37 天前
 hahade

经过

昨天领导让我看一个前端项目,项目直接在我的 Windows 11 电脑上面执行此命令即可打开:npm run start。今天早上不知道咋了,我想看下 Linux ,然后一顿折腾后在电脑上安装了 WSL ,WSL 的版本信息如下:

WSL 版本:2.1.5.0
内核版本:5.15.146.1-2
WSLg 版本:1.0.60
MSRDC 版本:1.2.5105
Direct3D 版本:1.611.1-81528511
DXCore 版本:10.0.25131.1002-220531-1700.rs-onecore-base2-hyp
Windows 版本:10.0.22631.3593

问题

现在快下班了,想再看下领导让我看的项目,结果在我的 Windows 电脑上运行 npm run start 直接报错了,现在有点慌了,不知道是怎么回事,难道要卸载 WSL ?

11: exec: node: not found
1022 次点击
所在节点    Windows
18 条回复
yggd
37 天前
在 WSL 里装完 Linux 装 Node 和 NPM 了吗?
hahade
37 天前
@yggd 没有,WSL 只是我安装得好玩,想了解一下。实际我的项目都在 Windows 11 上运行。
yggd
37 天前
没装哪来的 npm
hahade
37 天前
@yggd 我的项目在本机,不在 WSL 中,我也不需要 WSL 来跑项目。猜测是 WSL 影响了我本机的 npm 脚本执行。
yggd
37 天前
gucheen
37 天前
检查一下环境变量,最不济就重装一下 node 或者 npm 呗
yggd
37 天前
@hahade Sorry ,理解错了
gucheen
37 天前
@hahade 大概率是你现在打开终端之后,默认用了 WSL 的环境
gucheen
37 天前
你可以试着手动切换到 windows 的 cmd
hahade
37 天前
@gucheen 运行 npm run start 时的终端就是 PowerShell ,我个人猜测可能是某个库在调用 exec 时走到了 WSL 环境。
cutecore
37 天前
我也遇到了,之后不在用 wsl2 还是继续 vmware player 了
hahade
37 天前
@cutecore 看来,我还是把 WSL 卸载算了,装个 VM 简单用用,就是有点耗电脑性能。
ysc3839
36 天前
执行
which npm
或者
where npm
试试?
hahade
36 天前
折腾了一圈,算了,还是用 Windows 好。
Motorola3
36 天前
小问题,仔细检查本地 node 环境,如果没了就再装一遍,如果还在就检查环境变量,你以为 npm 是调用什么,是从你环境变量里面添加的目录找到一个叫做 npm.exe/npm.sp1/npm.bat 来执行的 node 同理
mmdsun
36 天前
要在 linux 中安装 npm node 环境, 你用的是 windows 的 npm ,没用到 WSL 2 里的。

user@LAPTOP-D0V5MGO3:~$ whereis npm
npm: /mnt/c/Users/user/AppData/Roaming/nvm/v18.17.0/npm /mnt/c/Users/user/AppData/Roaming/nvm/v18.17.0/npm.cmd
Dragonphy
36 天前
在 Windows 中执行 `winget install -e --id OpenJS.NodeJS`
hahade
36 天前
感谢大家回复我,现在统一回复一下:我的项目都在 Windows 上,WSL 只是好奇才安装的。我的项目运行不需要 WSL 。此问题我卸载 WSL 后就解决了,大概率是因为安装 WSL 后导致 CMD 在执行中有部分命令行的上下文环境跑到 WSL 中去了。可能是微软想让 CMD 与 WSL 共享命令执行环境所致。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1041381

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX