【问题标题】:When installing nvm on WSL2, can I use it in Windows itself?在 WSL2 上安装 nvm 时,我可以在 Windows 本身中使用它吗?
【发布时间】:2021-08-11 20:04:30
【问题描述】:

我想在我的 Windows 机器上安装 node.js,并且我想使用 nvm 来执行此操作。我知道在 Windows 机器上安装实际 nvm 的唯一方法是使用 WSL(我目前正在考虑 WSL2,但如果有理由使用 1,请告诉我,我没有经验)。据我了解,WSL 有点类似于(或者是?)虚拟机,在这种情况下,只有在我想在 WSL 中使用 node.js 时,在 WSL 中安装 nvm 才有意义。还是我错了,有一些魔法在起作用,使 Windows 本身能够使用安装在 WSL 中的 nvm?


简而言之:

WSL 上的 nvm -> WSL 上的 node.js

WSL 上的 nvm -> Windows 上的 node.js


我知道 WSL 只允许我安装一些 linux 发行版。只是为了争论,我说“在 WSL 上安装”。

【问题讨论】:

    标签: node.js windows-subsystem-for-linux nvm


    【解决方案1】:

    您说得对,在 Windows 上运行 nvm 的唯一受支持方法是通过 WSL。有一个单独的(与“原始”nvm 无关)nvm-windows 项目,但我无法谈论它的质量。在“专业”方面,我确实看到微软在他们的一些 Windows 的NodeJS 文档中引用了它。但作为一个“骗局”,它看起来像是在大约 3 年前的某个地方最后一次更新。这可能是也可能不是(或成为)问题。

    是的,如果你在 WSL 下使用nvm,它只会安装 Linux 版本。您不能使用它来管理 Node-for-Windows 安装。正如@ThomasUrban 在 cmets 中指出的那样,在尝试安装 nvm 时,已经安装了 Windows 节点版本甚至可能会导致问题。

    我个人更喜欢n,但它也会有类似的限制。

    这确实是一个单独的问题,可能应该单独发布,但 WSL2 和 WSL1 确实相辅相成。我将复制/粘贴我不久前发布的 Reddit 帖子:

    • WSL2 相对于 WSL1 的优势:
      • 真正的 Linux 内核,允许本地运行 Docker 等功能。另一方面,WSL1 通过尝试将 Linux API 映射到等效的 Windows API 来模拟 Linux API。
      • 真正的网络堆栈,允许 VPN、隧道等。
      • ext4 性能略优于 WSL1
      • 通过使用虚拟硬盘 (.vhdx) 实现更强大的文件系统
    • 与 WSL1 相比,WSL2 的缺点:
      • NTFS/drvfs 性能要慢得多。说真的,WSL 内核 repo 的git clone 在 WSL1 上需要几秒钟,但在 WSL2 上大约需要 10 分钟。如果您需要处理 NTFS 上的文件,请为此保留一个 WSL1 实例。

      • 网络位于 Windows 主机“后面”的虚拟 NIC 上。这意味着如果您在 WSL2 实例上运行服务(例如 ssh 或 http),如果没有一些 hacky 端口转发,它将无法用于网络上的其他设备。

        WSL1 的网络堆栈是伪桥接的,因此可以直接从 Windows 主机 IP 地址访问网络服务。

        因此,如果您将 WSL 用于 React/Angular/Svelte/Vue/etc 开发,从网络的角度来看,WSL1 更直接。

    所以也许令人惊讶的是,对于许多 Node 开发人员来说,WSL1 可能是更好的选择。您始终可以安装第二个副本并将其设为 WSL2 - 两者将相互运行。

    最后一点:

    我知道 WSL 只允许我安装一些 Linux 发行版。

    您可能会感到惊讶。虽然 Microsoft Store 中预装了一些发行版,但 WSL 几乎可以导入任何发行版(微软称其为“任何”)发行版。见this doc

    【讨论】:

    • 非常感谢您详尽的回答!我现在选择了 nvm-windows。
    • @Morten360 啊,太糟糕了。我们一直在努力欢迎更多人加入对 WSL 的崇拜! (当然是在开玩笑——不同的工作流程适用于不同的人)。很高兴我能帮上忙!
    • "是的,如果你在 WSL 下使用 nvm,它只会安装 Linux 版本。" ...除非有阻止 WSL 安装的 Windows 版本。在我的情况下,安装 nvm 会尝试访问 /mnt/c/Program Files/nodejs,因此似乎对 Win10 的其余部分可用的任何内容都非常感兴趣(使用带有 WSL2 的 Ubuntu 20.04)。
    猜你喜欢
    • 1970-01-01
    • 2021-08-04
    • 1970-01-01
    • 1970-01-01
    • 2017-08-23
    • 1970-01-01
    • 2021-12-23
    • 1970-01-01
    • 2012-09-19
    相关资源
    最近更新 更多