Nvm-windows: 路径中的空格问题

创建于 2015-02-17  ·  71评论  ·  资料来源: coreybutler/nvm-windows

你好! 我在尝试nvm use <node_version>时遇到问题
captura
抱歉屏幕截图中的西班牙语。 这意味着“c:\Users\Edu”不被识别为内部命令...... bla bla bla。
我的用户名是“Edu Martin”,我的路径是“c:\Users\Edu Martin\AppData\Roaming\nvm”
路径中有黑色空格可能是错误的吗?? 我的应用程序中的所有设置都是标准的

最有用的评论

因此,对此的解决方法是编辑您的 settings.txt 并使用没有空格的备用 Windows 文件夹命名方案,在我的情况下是:

2

(settings.txt 默认在 AppData\Roaming\nvm 中)

所有71条评论

+1

我的解决方法是卸载然后重新安装Public用户。 不理想但很高兴在 Windows 上运行 NVM!

+1 许多 Windows 安装的用户名都带有空格

+1 为此,我的用户名遇到了同样的问题

1

因此,对此的解决方法是编辑您的 settings.txt 并使用没有空格的备用 Windows 文件夹命名方案,在我的情况下是:

2

(settings.txt 默认在 AppData\Roaming\nvm 中)

@coreybutler可以请我们解决这个问题吗?

:pray:: :pray:: :pray: :pray:: :pray: :pray: :pray: :pray: :pray:: :pray::

这是一个 gif 试图强迫你...

我的构建环境最近/实质性发生了变化,所以问题是发布二进制文件(我有一个真正定制的构建脚本)。 我很乐意将修复添加到主分支,它只需要从源代码构建。

我下周必须去英国,但当我回到美国时,我会尽快解决这个问题。

那将是可爱的@coreybutler :) 另外,也许我们可以将下一个版本(使用此补丁)链接到 #17 等?

我遇到这个问题是因为它想使用“C:\Documents and Settings(my name)\Application Data\nvm”作为根。 所以我所做的是重新安装 nvm,在安装过程中指定“C:\”作为根目录而不是默认值,所以它现在将所有版本的 Node 存储在“C:\nvm”中,当然它在小路。 Settings.txt 确认这是根。 我只需要记住在使用任何 nvm 命令之前 cd 到 C:\,否则它会抛出一个错误,说它找不到 settings.txt。 就我而言,由于 C:\ 不与任何用户关联,当我使用“nvm use <version>”切换到 Node 版本时,它会询问我想使用哪个用户帐户来运行程序。 但它似乎运行良好; 我收到“正在使用节点 <版本>”消息。

+1对于任何想要编辑settings.txt的解决方法的人,您可以从命令行尝试此操作以获得正确的格式化路径

cmd /c for %A in ("C:\Users\My Name With Spaces\AppData\Roaming\nvm") do @echo %~sA

将 nvm-windows 安装到 Program Files 也会导致此错误。 更新 settings.txt 如下解决了这个问题,但解决这个问题会很好,或者作为“陷阱”添加到自述文件中!

根目录:C:\PROGRA~1\nvm
路径:C:\PROGRA~1\nodejs

我发现在 Windows 上使用符号连接链接也是解决此问题的合适方法
使用这样的东西
mklink /J nvm_home "C:\Users\Chris McGrath\AppData\Roaming\nvm"

然后使用连接地址更新 settings.txt

一旦我创建了这个链接切换开始工作没有任何问题

所以这个issue已经开了快一年了。 nvm-windows 死了吗?

@codeimpossible - 没有死,我只是有更高的生活优先级要处理。 我将在 gitter 中发布有关它的说明。

@coreybutler只是想让您知道我每天都使用nvm-windows并感谢您为项目付出的所有辛勤工作

@kirkouimet谢谢...很高兴听到它有帮助!

嗨,coreybutler,nvm 做得很好。 这真的让我的生活更轻松:D

但是你能在任何地方写下关于这个空间的信息吗? 就像是

“如果您的用户名中有空格,请更改安装程序使用的默认目录并选择没有空格的路径。”

我从来没有在 github 上编辑过 wiki。 我有点害怕我能做什么。

@AntiCZ - 好主意。 我添加了一个常见问题页面来解决这个

我使用以下方法解决我的问题:
cmd /c for %A in ("C:\Users\My Name With Spaces\AppData\Roaming\nvm") do @echo %~sA
通过@mhchristensen
然后在setting.txt中更改root
非常感谢:+1:

如果$env:USERPROFILE中没有空格,人们是否仍然对程序文件中有空格的 nodejs 路径有问题? 我在 Windows 2012R2 VM 上没有看到相同的行为。

我将与名称中带有空格的用户一起进行测试,以查看这是否会导致某种级联故障。 获得一些操作系统版本以及您正在使用的 cmd 提示(PowerShell/CMD/Bash4Windows/GitBash)会很棒。

现在我正在重构某人为 nvm 创建的 Chocolatey 包,并希望尽快发布它。 它避免了安装程序并使用没有空格的巧克力安装路径,并且我在 settings.txt 文件中有空格的节点路径没有任何问题。

我遇到了几乎同样的问题,除了我的用户名有一个和号 (&) 而不是空格。 在这种情况下,使用备用文件夹名称无济于事,因为即使是短名称也仍然带有与号。 但是,正如@clmcgrath建议的那样,创建符号链接对我来说是一个很好的解决方法。

只需将其安装到没有任何特殊内容的目录即可。 例如:C:\nvm\

还有为什么 Chocolatey 上的 NVM 包使用 C:\ProgramData\nvm 路径,因为这是与“所有用户”等效的程序文件,但没有空格。

这可以通过使用带有空格的文件夹或文件的备用名称来解决。 例如,我在“C:\Programs Files\nvm”中安装了 nvm。 转到带有空格的文件夹上方的文件夹并使用 /X 选项获取带有古董 8.3 名称的目录列表:

光盘\
目录/X

我有一条线,看起来像...

2/15/2017 03:44 PM \

然后只需编辑 settings.txt 文件(在我的情况下在 \Programs Files\nvm 中)并编辑有问题的文件夹名称:

根目录:C:\Progra\~1\nvm
路径:C:\Progra\~1\nodejs

(这与@markbrownsword一年多前给出的解决方案相同,但他的消息被降价引擎

视窗

移动到没有空格的路径

或者

以管理员身份运行cmd
然后将它 mklink 到没有空格的新路径。

@coreybutler 有关于这个问题的消息吗? 我刚刚被它击中了。 如果你告诉我要找什么,我愿意公关它:)

我刚刚发布了v1.1.6 ,它利用了 Go 1.8.3 中的新路径管理系统。 我所有的本地测试都使用路径中的空格和特殊字符,但我目前只能在英语安装的 Windows 10 上进行测试。 希望遇到过这个问题的朋友可以测试一下。 假设问题已解决,我将正式发布 1.1.6 作为修复程序。

TBH 我现在在很多版本中都没有发生过这个问题,一年左右的时间已经很顺利了

@clmcgrath - 很高兴听到它!

为了澄清起见,我的主要好奇心是非英语装置,它们产生了一些隐藏字符,Go 被识别为字符串终止符......它过早地切断了路径。

还是不行。 我尝试更改 setting.txt 也无济于事。

@chillerfx - 是否运行任何命令,还是只是nvm use失败? 另外,您的环境是什么语言环境(非英语?)

在我的 Windows 7 操作系统上,“nvm list”有效,但“nvm use”' 不起作用。 我的语言环境是英语。 由于用户名中的空格不起作用,还将 settings.txt 更改为使用 ~1。 完成后 nvm list 也不起作用。

我的设置:

nvm v1.1.6
Windows 10 专业版(版本 1703,内部版本 15063.540)
语言环境:英语(英国)

还是有这个问题。 nvm install latest有效,但nvm use 8.4.0失败。 我的用户名中有一个空格,比如“John Smith”,我得到的错误是exit status 1: 'C:\Users\John' is not recognized as an internal or external command, operable program or batch file.

不过,按照@ryan-mcguire 的建议,在编辑我的设置文件时,一切(列出、使用、安装)都有效。

那些有问题的人可以运行nvm root并报告打印的内容吗?

nvm 根: C:\Users\Jeff Utz\AppData\Roaming\nvm

我的设置:

nvm v1.1.6
Windows 10 专业版(1703,内部版本 15063.540)
语言环境:英语(美国)

除了nvm use ... nvm on之外的所有命令都将启用 nvm 但随后会出现exit status 1错误

尝试使用缩短的路径名。
要找到缩短的路径:
C:\用户
目录/x

不要忘记重新启动 Windows。

error

如何解决错误??请分享您的回答..

@psiddharth709 - 请停止在多个问题中发布相同的问题。

我挖掘 c:\nvm 解决方案。 我喜欢拥有我的东西,尤其是。 在 Windows 上的一个文件夹中,我可以轻松找到它(c:\xammp 是我的 apache 服务器)。 这样做了,一切都很好。 感谢您的辛勤工作。

@coreybutler您可以通过在任何带有空格字符的文件夹中安装nvm来测试该问题。 例如在C:\Program files\nvm (错误如上面的 XepherX 所示——“'C:\Program' 无法识别...”)。

我的猜测是问题在于用elevate.cmd运行exec.Command 。 我不确定,因为我不知道如何调试 Go。 但是,当我重命名elevate.cmd我收到一个关于丢失文件的错误,当我恢复elevate.cmd我收到错误消息“'C:\Program' 无法识别...”

所以这似乎不是字符集的问题。 并且该问题在 Windows 7 和 Windows 10 中都会出现。即使cmd已经被提升(以管理员身份运行)。

@coreybutler不幸的是,即使使用 1.1.6 预发布版本,对我来说仍然是与此问题中的其他人相同的问题。

感谢大家! 我为延迟发布新版本而道歉......我仍然被淹没(和招聘)。

@Eccenux - 你可能在那里做点什么。 我将查看elevate.cmd 。 Go 已编译,因此调试在构建前进行。 我认为提升命令更有可能是罪魁祸首,但会确认我得到的第一次机会。

我和@davidrosevear 遇到了同样的问题。 nvm install与 1.1.6 一起工作,但nvm use没有。 让我知道我是否可以提供帮助@coreybutler。

我仍然遇到这个问题

@seanpoulter和其他任何有兴趣提供帮助的人......

我有一个很大的问题 - _很多_新客户涌入我的咨询公司。 问题是:处理其他任何事情的时间异常少。 任何可以查看此问题的额外眼睛将不胜感激。 我仍然没有机会研究@Eccenux的建议 re: elevate.cmd ,但我认为这是起点。 1.1.6 有一堆本地 go 字符转义,所以我的直觉说问题不在于 Go……但 elevate 命令没有用其余的代码进行测试。

恭喜! 这确实是一个很大的问题。

让我们在@coreybutler忙的时候看看这个社区的解决方案和公关。 我有一个很大的 PR 需要审查另一个 repo (vscode-jest),所以在我自己深入研究这个之前还需要一点时间。

那些缩短的文件版本不起作用,在带有空格的路径中安装 R 也不起作用
我们如何解决这些问题。 如果我们将 R 安装在不同的目录中,它是否仍将路径变量用于其他任何事情?

自从上次发布以来已经有一段时间了,我决定同时发布一个包含我之前在我的 fork 上提交的修复程序的修复程序:
https://github.com/shadow/nvm-windows/releases/tag/1.1.7

我通过将其移动到 C:nvm 来解决,但我想知道是否计划进行任何修复....

谢谢@shadow 刚刚安装了来自v 1.1.6 ,我的用户名是“Cody Swartz”,在我的路径中我遇到了与其他人相同的错误,并且您的修复程序看起来很干净而且切中要害。 现在nvm use起作用了! 🎉

我今天第一次下载并安装了 nvm for windows 并遇到了这个问题。 我正在运行 1.1.7 版。 有什么我在这里想念的吗? 这不应该在 v1.1.6 及更高版本中修复吗?

也有这个问题。 使整个事情几乎无法使用。

编辑:通过 ~1 技巧修复它。

因此,对此的解决方法是编辑您的 settings.txt 并使用没有空格的备用 Windows 文件夹命名方案,在我的情况下是:

为了更准确地扩展这一点,转换如下:C:\Users\John Doe -> C:\Users\JOHND~1

该错误仍然存​​在。 它没有解决。 使用 nvm 1.17

根目录:C:\PROGRA1nvm
路径:C:\PROGRA1\nodejs

这个线程前面提到的配置是错误的,或者至少对我不起作用......;)
对于任何偶然发现这个问题的人。
在 C:\Program Files 中安装 nvm 和 nodejs 后,只需在 settings.txt 中使用以下配置,它应该可以工作。

root: C:\PROGRA~1\nvm
path: C:\PROGRA~1\nodejs

@Laslo89有正确答案,用 ~ 替换空格效果很好

因此,对此的解决方法是编辑您的 settings.txt 并使用没有空格的备用 Windows 文件夹命名方案,在我的情况下是:

2

(settings.txt 默认在 AppData\Roamingnvm 中)

对于像我这样缺乏通用技术能力的人来说,这是一个快速说明。 如果您在命令提示符中使用dir *. /x ,它将列出当前位置中的目录,在中间列中为您提供8.3 表单名称。 然后,您可以使用它来更改上述设置。 虽然,如前所述, Program Files变成了PROGRA~1

哪个网站提供离子相关的最新教程。? 请告诉我.....

>

这个问题怎么还没解决?! 如果它是 1.1.7 中的回归,也许可以考虑在发布之前添加一些集成/单元/回归测试来覆盖 Windows(或 linux 与此相关的)路径名中不那么罕见的空格情况......

你们需要这方面的支持还是已经有人积极致力于此?

@julian-becker,首先我想告诉你你激进的开始:

这个问题怎么还没解决?!

这很粗鲁。 开源社区的人们不欠你任何时间或注意力。 是什么让您的业余时间比维护者或我们的更宝贵? 您似乎没有花时间看到@coreybutler已经在这里回答了您的问题:

我有一个大问题——很多新客户涌入我的咨询公司。 问题是:处理其他任何事情的时间异常少。

您还错过了@shadow 共享的解决方案和分支。

其次,你有一个很好的游戏计划,应该如何做到这一点。 做吧! 如果您有时间,看到此问题的每个人都会感谢它已得到修复。 看看@shadow 做了什么,添加测试,获得 PR,并在此处寻求代码审查方面的帮助。 有人自私到足以帮助完成。 祝你好运,如果需要帮助,请联系这里! 👏

获得公关

为避免可能的混淆和工作重复进行,我想指出我的修复程序已经合并,这只是实际发布它的问题。

完美的! 我也没有那么多时间阅读。 😆

@shadow 又遇到这个问题了,不知道什么时候发布?

@coreybutler你介意在这里的最后一篇文章中链接到我的 fork 中的版本,然后锁定这个线程吗? 我认为没有必要进一步讨论它......

@coreybutler可以发布吗?

请释放这个:)

使用 shadow 发布的叉子(见上面的链接)对我来说是唯一的方法。 太谢谢了!

我已链接到@shadow 在常见问题中的发布。

对不起,我花了这么长时间才发布。 我知道这看起来很简单,但时间对我来说是残酷的。 也许有一天我会写它。

1.在cmd中,进入你的主目录并输入dir/x以查看该文件夹的缩写名称
2.然后在setting.txt中用这个缩短的名称替换你的用户名
3.它有效

+1对于任何想要编辑settings.txt的解决方法的人,您可以从命令行尝试此操作以获得正确的格式化路径

cmd /c for %A in ("C:\Users\My Name With Spaces\AppData\Roamingnvm") do @echo %~sA

非常感谢这件事救了我的命。

解决了!!

对于无法使用@kirkouimet 的~1 方法的
打开 CMD 转到用户文件夹并获取缩短的文件夹名称。

并输入

> dir\x

Annotation 2020-05-25 112714

现在稍后复制或记下文件夹名称后
Annotation 2020-05-25 113201

希望能帮助到你

解决了!!

对于无法使用@kirkouimet 的~1 方法的
打开 CMD 转到用户文件夹并获取缩短的文件夹名称。

并输入

> dir\x

Annotation 2020-05-25 112714

现在稍后复制或记下文件夹名称后
Annotation 2020-05-25 113201

希望能帮助到你

谢谢大家,提出了 settings.txt 解决方案,但特别是 Swarag-N 进行了如此详尽的解释。 我很高兴来到这里并且没有更改我的用户配置文件文件夹名称。
谢谢

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

相关问题

tomByrer picture tomByrer  ·  4评论

snerte picture snerte  ·  5评论

petrovicz picture petrovicz  ·  4评论

SufyanParkar picture SufyanParkar  ·  4评论

janpio picture janpio  ·  3评论