node.js - 在不使用 NVM for Windows 的情况下在 Windows 上安装多个版本的 Node.js

标签 node.js windows nvm nvm-windows

关于如何不使用 NVM 在同一台计算机上安装两个版本的 Node.js(例如 v10 和 v14),我找不到任何问题/答案。我无法使用 windows-nvm,因为它需要管理员权限,而且我以标准用户身份在公司笔记本电脑上工作。

我需要能够安装多个不同版本的 Node.js,因为同一公司下的不同项目需要使用不同版本的 Node.js。

难道只能卸载安装的版本,每次都安装新版本吗?有什么方法可以让 v10 在 C:\Program Files\node10 下,v14 在 C:\Program Files\node14 下?

需要说明的是,管理员愿意授予我特定权限或安装所需的任何软件,以便让此功能正常运行。我们曾尝试使用一种名为 RunAsTool 的工具来让我以管理员身份运行 NVM,但由于其局限性,这不起作用。

另一种选择是授予我对 NVM 运行所需的任何文件和目录的管理员权限,但没有我能找到的这些文件/文件夹的列表。

第三种选择是简单地安装两个不同的版本,但是当你安装一个新版本时,以前的版本会被删除,即使它安装在一个不寻常的路径下,比如 C:\Program Files\node16.

最佳答案

我认为没有简单的方法可以做到这一点。从广义上讲,您需要两件事才能让 Node 在 Windows 上运行:其中包含可执行文件的 nodejs 文件夹,默认情况下为 c:\Program Files\nodejs,以及在任何其他 Node 路径之前在系统路径上的路径。

不幸的是,写入 c:\Program Files 和更改系统路径都需要管理员权限。

但是,有一个有点笨拙的解决方法。总体思路是将 nodejs 文件夹放在您具有写入权限的位置,将系统路径指向它,它应该会运行。然后您可以通过替换文件夹来切换没有管理员权限的版本。为此:

  • 使用管理员,安装您要使用的第一个版本。将 c:\Program Files\nodejs 文件夹复制到新安装时不会被删除的位置:如果它是版本 10,则说 c:\nodejsbackups\v10\nodejs。
  • 安装您要使用的第二个版本,并将 nodejs 文件复制到同一个位置,比如 c:\nodejsbackups\v14\nodejs。
  • 同时将其复制到您将运行它的位置以及您具有写入权限的位置,如果您对 c: 驱动器具有写入权限,则选择 c:\nodejs,如果没有,则选择您的用户配置文件。
  • 仍具有管理员权限,edit the system Path environment variable (不是用户路径)。找到 c:\Program Files\nodejs 的条目并将其删除。为 c:\nodejs 添加一个条目。或者只是编辑它。
  • 我发现要让 Visual Studio Node 应用正常工作,我还必须使用控制面板/程序和功能卸载原始 Node 。

现在启动命令提示符并执行 node --versionnpm --version,您应该会看到第二个版本正在运行。

要切换版本,无需管理员删除 c:\nodejs,然后将第一个版本从 c:\nodejsbackups\v10\nodejs 复制到那里。 重新启动您的命令提示符,发出相同的命令,您应该会看到第一个版本现在正在运行。

这似乎适用于一些非常有限的测试,但我认为您需要测试它是否适用于您的用例。可能有像 Visual Studio 这样的程序假设 Node 位于 c:\Program Files 而不使用路径。最后,乞求管理员权限可能更好。

关于node.js - 在不使用 NVM for Windows 的情况下在 Windows 上安装多个版本的 Node.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69920893/

相关文章:

nvm 安装无法附加 nvm 源字符串

node.js - 使用 sudo 运行 npm 时 sudo : npm: command not found,

node.js - Node核心模块的确切列表

node.js - 查询 MongoDb 以从引用 id 数组的集合中获取计数

javascript - 在 node.js 中使用命名参数

Node.js 显示 [object Object] 而不是 result.row

php - 如何在 Windows 的交互式 CLI 中运行 php

java - 启动 Sikuli 设置时出现问题

node.js - webpack 构建时缺少绑定(bind)/myproject/node_modules/node-sass/vendor/linux-x64-57/binding.node

python - Windows 中的信号处理