V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hahade
V2EX  ›  Windows

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

  •  
  •   hahade · 39 天前 · 1027 次点击
    这是一个创建于 39 天前的主题,其中的信息可能已经有所发展或是发生改变。

    经过

    昨天领导让我看一个前端项目,项目直接在我的 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
    
    18 条回复    2024-05-17 12:52:11 +08:00
    yggd
        1
    yggd  
       39 天前
    在 WSL 里装完 Linux 装 Node 和 NPM 了吗?
    hahade
        2
    hahade  
    OP
       39 天前
    @yggd 没有,WSL 只是我安装得好玩,想了解一下。实际我的项目都在 Windows 11 上运行。
    yggd
        3
    yggd  
       39 天前
    没装哪来的 npm
    hahade
        4
    hahade  
    OP
       39 天前
    @yggd 我的项目在本机,不在 WSL 中,我也不需要 WSL 来跑项目。猜测是 WSL 影响了我本机的 npm 脚本执行。
    yggd
        5
    yggd  
       39 天前
    gucheen
        6
    gucheen  
       39 天前
    检查一下环境变量,最不济就重装一下 node 或者 npm 呗
    yggd
        7
    yggd  
       39 天前
    @hahade Sorry ,理解错了
    gucheen
        8
    gucheen  
       39 天前
    @hahade 大概率是你现在打开终端之后,默认用了 WSL 的环境
    gucheen
        9
    gucheen  
       39 天前
    你可以试着手动切换到 windows 的 cmd
    hahade
        10
    hahade  
    OP
       39 天前
    @gucheen 运行 npm run start 时的终端就是 PowerShell ,我个人猜测可能是某个库在调用 exec 时走到了 WSL 环境。
    cutecore
        11
    cutecore  
       39 天前
    我也遇到了,之后不在用 wsl2 还是继续 vmware player 了
    hahade
        12
    hahade  
    OP
       39 天前
    @cutecore 看来,我还是把 WSL 卸载算了,装个 VM 简单用用,就是有点耗电脑性能。
    ysc3839
        13
    ysc3839  
       39 天前 via Android
    执行
    which npm
    或者
    where npm
    试试?
    hahade
        14
    hahade  
    OP
       39 天前
    折腾了一圈,算了,还是用 Windows 好。
    Motorola3
        15
    Motorola3  
       39 天前
    小问题,仔细检查本地 node 环境,如果没了就再装一遍,如果还在就检查环境变量,你以为 npm 是调用什么,是从你环境变量里面添加的目录找到一个叫做 npm.exe/npm.sp1/npm.bat 来执行的 node 同理
    mmdsun
        16
    mmdsun  
       39 天前
    要在 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
        17
    Dragonphy  
       39 天前
    在 Windows 中执行 `winget install -e --id OpenJS.NodeJS`
    hahade
        18
    hahade  
    OP
       39 天前 via Android
    感谢大家回复我,现在统一回复一下:我的项目都在 Windows 上,WSL 只是好奇才安装的。我的项目运行不需要 WSL 。此问题我卸载 WSL 后就解决了,大概率是因为安装 WSL 后导致 CMD 在执行中有部分命令行的上下文环境跑到 WSL 中去了。可能是微软想让 CMD 与 WSL 共享命令执行环境所致。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5199 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 08:25 · PVG 16:25 · LAX 01:25 · JFK 04:25
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.