Nvm-windows: mklink 在 Windows 10 上不可靠

创建于 2017-05-04  ·  3评论  ·  资料来源: coreybutler/nvm-windows

我的环境

  • [ ] Windows 7 或更低版本(由于 EOL 不真正支持 - 请参阅 wiki 了解详细信息)
  • [ ] 视窗 8
  • [ ] 视窗 8.1
  • [X] 视窗 10
  • [ ] Windows 10 物联网核心
  • [ ] Windows Server 2012
  • [ ] Windows Server 2012 R2
  • [ ] Windows Server 2016

  • [ ] 我的 Windows 安装是非英语的。

我已经...

  • [X] 阅读自述文件以了解 npm 陷阱和防病毒问题。
  • [X] 查看维基以确保我的问题尚未解决。
  • [X] 已验证我正在使用具有管理权限的帐户。
  • [X] 搜索了问题(打开和关闭)以确保这不是重复的。
  • [X] 确保这不是关于如何在 Windows 上使用 NVM 的问题,因为gitter用于问题和评论。

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

  • [] 设置.txt
  • [] 代理支持
  • [] 32 或 64 位支持

预期行为

nvm use <version>应该在C:\Program Files\nodejs或文件 settings.txt 中路径参数中提供的值处创建符号链接

实际行为

符号链接并不总是被创建,即使我从提升的 shell 运行 nvm use。

重现问题的步骤:

nvm install 6.9.1
nvm use 6.9.1

elevate.cmd 脚本提示我,我回答是,符号链接未创建

我不知道它是否相关,但我从 powershell 运行nvm use
也有点随机,在某些 Windows 10 上我有问题,而在其他人我没有。
我相信一个好的解决方法是测试在运行 cmd.exe mklink 后是否创建了符号链接。 如果符号链接不存在,请运行 powershell 命令 new-item 创建链接

所有3条评论

运行nvm use后您实际上没有看到符号链接吗? 您是否尝试过在标准 shell 而不是 Powershell 中运行命令?

1.Please delete the installation node by window10 uninstall program

2.nvm install

3.modification Environment Variables window(reference)

Chinese interpretation:
1.window10 装nvm要先删掉电脑本身已经装的node,因nvm无法管理window10 已经装的nvm(报修改注册表失败)
2.装完nvm后使用nvm本身装 node
3.修改 NODE_PATH,为C:\Program Files\nodejs;因nvm在“C:\Program Files\nodejs”创建一个软连接,连接到“nvm root”(nvm root指向node实际目录)

@coreybutler :不,我在运行 nvm use 后没有看到符号链接。

您是否尝试过在标准 shell 而不是 Powershell 中运行命令?

=> 重点是从 powershell 运行它。 事实上,我运行了一个安装大量依赖项并配置虚拟机的脚本。 这是脚本的一个子集

$wc = New-Object System.Net.WebClient

# configure repositories
Set-PSRepository -Name PSGallery -InstallationPolicy Trusted

Get-Packageprovider -Name chocolatey
Set-PackageSource -Name Chocolatey -Trusted

Install-Package 7zip.install -ProviderName Chocolatey -RequiredVersion 16.02.0.20160811
$env:PATH+=";C:\Program Files\7-Zip"

$source = "https://github.com/coreybutler/nvm-windows/releases/download/1.1.3/nvm-setup.zip"
$archive = Join-Path $env:TEMP ($source.substring($source.lastindexOf('/') + 1))

$wc.DownloadFile($source, $archive)

echo "downloaded at: $archive"

7z x -aoa -y $archive "-o$env:TEMP"

#$uninstallScript = (Join-Path $PSScriptRoot uninstall_cmdline.ps1)
#&$uninstallScript -software "NVM for Windows*" | Out-Null

$nvmSetup = Join-Path $env:TEMP "nvm-setup.exe"
Start-Process $nvmSetup -ArgumentList @("/SILENT", "/SP-", "/SUPPRESSMSGBOXES") -Wait
ri $archive
ri $nvmSetup

$localNvmPath = Join-Path $env:APPDATA "nvm"
$defaultNodejsPath = "C:\Program Files\nodejs"
#Add-Path $localNvmPath
#Add-Env NVM_HOME $localNvmPath
ri $defaultNodejsPath -ErrorAction SilentlyContinue -Recurse -Force
nvm root $env:NVM_HOME
nvm install 4.5.0
nvm use 4.5.0
#create manually symlink if problem with nvm use, see https://github.com/coreybutler/nvm-windows/issues/266
#$nodePath = Join-Path $localNvmPath "v4.5.0"
#if ((-Not (Test-Path $nodePath) -or (-Not (Test-Path $defaultNodejsPath))))
#{
#    Start-Process powershell -Verb runAs -ArgumentList "-WindowStyle Hidden", "-Command `"&{ New-Item -Path `'$defaultNodejsPath`' -Value `'$nodePath`' -ItemType SymbolicLink }`"" -Wait -WindowStyle Hidden
#}

您应该能够将此脚本放在 ps1 文件中并按原样执行。 我评论了 Add-Env 和 Add-Path 函数,它们分别将变量添加到 env 和文件夹位置到 PATH。 我还评论了卸载脚本调用,如果之前安装过,它基本上会卸载 nvm。 我还评论了我发现的解决方法:手动创建符号链接。

@youzaiyouzai666 :我在 Windows 10 Enterprise 64 位上生成了一个新的 VM,没有安装以前的节点。

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

相关问题

webspecialist picture webspecialist  ·  5评论

Miggleness picture Miggleness  ·  6评论

janpio picture janpio  ·  3评论

eliavmaman picture eliavmaman  ·  6评论

snerte picture snerte  ·  5评论