Nvm-windows: 对于Windows 7,nvm在32/64位情况下不起作用

创建于 2016-07-18  ·  10评论  ·  资料来源: coreybutler/nvm-windows

我的环境

  • [X] Windows 7或更低版​​本(由于EOL而未真正支持)
  • [] Windows 8
  • [] Windows 8.1
  • [] Windows 10
  • [] Windows 10 IoT核心版
  • [] Windows Server 2012
  • [] Windows Server 2012 R2
  • [] Windows Server 2016
  • []我的Windows安装不是英语。

    我已经...

  • [X]阅读自述文件以了解npm陷阱和防病毒问题。

  • [X]查看了Wiki ,以确保我的问题尚未解决。
  • [X]已验证我正在使用具有管理特权的帐户。
  • [X]搜索了问题(打开和关闭),以确保这不是重复的问题。
  • [X]确保这不是关于如何在Windows上使用NVM的问题,因为问题和评论都使用了gitter

    我的问题与(仅检查适用的)有关:

  • [] settings.txt

  • []代理支持
  • [X] 32或64位支持

    预期行为

我正在运行Windows 7/64位
我安装了(带有admin priv)用于Windows 1.1.1的NVM。 从那里,我用

nvm install 6.1.0 all
nvm install 6.3.0 all

然后我打电话
nvm list
导致

C:\Users\kagentes>nvm list
    6.3.0
    6.1.0

然后我跑了
nvm use 6.3.0 64

接着
node -v
并有望得到
v6.3.0

实际行为

跑步时
node -v
我懂了

'node' is not recognized as an internal or external command,
operable program or batch file.

同样,即使在设置了nvm use命令之后,我注意到该列表似乎也无法确认“ use”命令是否有效。 如:

C:\Users\kagentes>nvm use 6.3.0 64
Now using node v6.3.0 (64-bit)

C:\Users\kagentes>nvm list

    6.3.0
    6.1.0

https://github.com/coreybutler/nvm-windows页面上的屏幕截图中,我相信nvm list命令应该在下面返回类似的内容(但是我没有得到这个

C:\Users\kagentes>nvm list

*   6.3.0 (In Use)
    6.1.0

它没有星号或“使用中”指示器。

可能地,这也将有助于诊断问题,但是当我执行nvm arch命令时,无论我在nvm use设置了什么,我都会得到以下奇怪的结果:

C:\Users\kagentes>nvm arch
System Default: 64-bit.
Currently Configured: -bit.

重现此问题的步骤:

在上面的预期行为部分中已经给出了复制步骤。 我已经尝试了其他问题(如第146期)中的可能建议,以及重新启动外壳程序,重新启动计算机并确保所有操作均使用管理员权限。 在开始所有这些操作之前,我卸载了计算机上以前的Node版本。 (然后安装nvm-windows并按照说明进行操作)。

help wanted

最有用的评论

@kgentes-我假设在nvm之前,您安装了64位版本的node,并使用默认值安装了nvm。

卸载节点后,确保已删除最初安装节点的目录,而不仅仅是空目录。 对于Windows 7(64位),默认值为“ C:Program Filesnodejs”。

如果“ nodejs”目录仍然存在,则“ nvm use”命令无法在nvm的控制下建立指向该节点版本的符号链接。

在手动删除“ nodejs”目录之前,我遇到了同样的问题。

希望有帮助

所有10条评论

很抱歉提出这个明显的问题,但是您是否尝试重新启动终端窗口? 在Win7上,有时在您第一次尝试使用特定版本(mklink)时仍会感到窒息。

是的。 我尝试重新启动终端窗口..然后是机器..都没有改变结果。

好-如果有时间,我会调查一下。 不幸的是,Win7并不是我经常遇到的东西。

所有人,有关Win7的参考: https :

@kgentes-我假设在nvm之前,您安装了64位版本的node,并使用默认值安装了nvm。

卸载节点后,确保已删除最初安装节点的目录,而不仅仅是空目录。 对于Windows 7(64位),默认值为“ C:Program Filesnodejs”。

如果“ nodejs”目录仍然存在,则“ nvm use”命令无法在nvm的控制下建立指向该节点版本的符号链接。

在手动删除“ nodejs”目录之前,我遇到了同样的问题。

希望有帮助

谢谢@pleverett ..我会尽快尝试的..感谢大家的注意。

@pleverett,谢谢您! 这如您所宣传的那样工作! 超赞! 该线程可以关闭。 对于将来可能会遇到此问题的Windows 7用户,可能应该将其标记为解决方案(不确定是否可以做,这里是我对这个生态系统的新手)。 现在,一旦我删除了默认情况下不会被卸载程序删除的“ C:Program Filesnodejs”(32位“ C:Program Files(x86)nodejs”)目录,NVM for Windows即可无缝运行。 除了该目录,我还删除了:
-“ C:UsersusernameAppDataRoamingnpm”
-“ C:UsersusernameAppDataRoamingnpm-cache”

尽管那可能没有必要。

无论如何,一切正常。 谢谢!

@pleverett @coreybutler

另一个相关的问题
现在,我可以通过nvm查看和更改node的版本,我想知道在执行以下操作时是否应该看到不同的结果:

npm config list

目前,除以下一个变量外,所有信息均未更改。
user-agent = "npm/3.10.3 node/v6.3.0 win32 ia32"

其他所有都保持不变。 似乎只有一个版本的全局安装的节点模块。

如果仅从6.3.0的64位版本更改为6.3.0的32位版本,我是否将安装相同的全局节点模块? 还是会变得与众不同? 还是我需要进行版本更改以获取不同的全局安装节点模块集? 理想情况下,我认为它将为每个位版本保留唯一的上下文(因为诸如libxml-???之类的本机节点模块),但是我可以理解为什么其他人可能不喜欢它以这种方式工作。

我还在用错吗? 还是这是一个相关的错误?

由于这仍在同一线程上进行,因此我想重新打开它,而不要创建新的问题... [有关更新的状态,请参见前面的评论]

@kgentes-很抱歉我错过了这个……可能应该是一个不同的问题。

如果仅从32-> 64bit切换,反之亦然,NVM4W将使用相同的全局node_modules目录。 这样做是有意进行的,主要是为了使Node环境的总占地面积最小。 为32/64位使用单独的安装目录将使大多数用户的存储空间增加一倍……总体存储空间是大多数用户甚至在空间用完之前甚至都不会考虑的问题。 尽管如此,我还是倾向于通过版本+ proc体系结构使用单个安装目录。 确实应该由用户决定,正如您所说,这会破坏某些本机软件包。

由于主题有所不同,因此我将结束本次讨论。 如果愿意,可以随时打开一个新期刊。

此页面是否有帮助?
0 / 5 - 0 等级