Nvm-windows: nvmのアンインストール時にフォルダを手動で削除する必要があります

作成日 2017年03月11日  ·  13コメント  ·  ソース: coreybutler/nvm-windows

こんにちは、
再現する手順は次のとおりです(エラーの説明を含む)。 これはx64システムで発生します。

nvm install xyz(6.10.0など、ただしバージョンは関係ありません)
nvmアンインストールxyz
=>アンインストールは成功し、残りはありません

nvm install xyz
nvmはxyzを使用します
nvm use uvw(別のバージョン-xyzが使用されていないことを確認するために-この手順はおそらく必要ありません)
nvmアンインストールxyz
=>常にnode.exeのみを含むnvmパスからフォルダxyzを手動で削除する必要があります

IMO、これは、「使用」の前にnode64.exeがあり、「使用」でnode.exeに名前が変更されたために発生します。 このnode.exeはこの時点から残り、明らかにフォルダーの削除をブロックします。

説明が十分に明確であることを願っています。
ありがとう

bug

最も参考になるコメント

macOSで同じ問題が発生したため、再度開く必要があります

全てのコメント13件

この後にnvm lsを実行すると、アンインストールされたバージョンが表示されますか?

はい、確かに-インストール/使用/アンインストール後、nvmlsはまだ
アンインストールされたバージョン。

ところで、アンインストールする前にnode.exeの名前をnode64.exeに変更すると、
バージョンは完全に削除されます(手動で削除する必要はありません)
フォルダ)。

OK、これをバグとしてマークしました。 どのバージョンのWindowsを実行していますか?

どのバージョンのWindowsを実行していますか?

Windows 10(アニバーサリーアップデート)x64

こんにちは、

arch.go:SearchBytesInFileのafaict(ただし、私はGo開発者ではありません)
開いたファイルが閉じられることはありません。 したがって、os.RemoveAllが削除しようとすると
ファイル共有違反があります。

これまでに報告されていないのに少し驚いていますが、
バグは「使用済み」バージョンのたびに発生するはずだと思うからです
(node.exeを含む)をアンインストールします。

実行可能ファイルが操作を完了すると、ファイルに関連付けられなくなります。 つまり、実行可能ファイルは1つの操作を実行してから、終了してすべてのファイル接続を閉じます。 しかしながら; 最新のWindowsビルドでこれを個人的にテストする機会はありませんでした。 Windowsが現在この操作にファイルロックを使用している場合、あなたは正しいかもしれません...それは長引く可能性があります。

できるだけ早くこれをデバッグしようとしますが、今週は契約の仕事をしていて、SXSWiの義務があります。 ですから、実際にこれで座れるようになるまでにはしばらく時間がかかるかもしれません。

実行可能ファイルが操作を完了すると、ファイルに関連付けられなくなります。 つまり、実行可能ファイルは1つの操作を実行してから、終了してすべてのファイル接続を閉じます。

IMO:nvm.exeはnode.exeを開きます(node64.exeなどではなくそれだけです)
数バイトをスキャンしますが、ファイルハンドルは閉じません。
次に、nvm.exeはフォルダを削除しようとします(ただし、もちろん終了していません)
間にあるため、ファイルハンドルはまだ開いています)。

しかしながら; 最新のWindowsビルドでこれを個人的にテストする機会はありませんでした。 Windowsが現在この操作にファイルロックを使用している場合、あなたは正しいかもしれません...それは長引く可能性があります。

それは実際にはファイルロックではありません。 私はnvm.exeにエラーとそれを出力させます
「ファイルはによって使用されているため、プロセスはファイルにアクセスできません。
別のプロセス」(これは、まったく同じである場合は同じメッセージです
処理する)。

できるだけ早くこれをデバッグしようとしますが、今週は契約の仕事をしていて、SXSWiの義務があります。 ですから、実際にこれで座れるようになるまでにはしばらく時間がかかるかもしれません。

大丈夫、問題無いです。 次のバージョンで修正できれば。

ありがとう!

私は少しテストを行いましたが、これは、nvmがxxxを使用して削除するバージョンであり、arch 64を使用している場合にのみ発生します。前述のように、node64.exeはnode.exeに名前が変更され、削除されません。 ただし、別のバージョンを使用し、手動でnode.exeの名前をnode64.exeに変更すると(ujaroeが言及しているように)、アンインストールは正常に完了します。

これは、問題を修正する方法がいくつかあることを意味します。 'nvm use'を使用して、useコマンドがFROMを元の状態に戻しているバージョンフォルダーを復元することをお勧めします。 もう1つは、アンインストールチェックアーチを使用して、ノードの実行可能ファイルがバージョンのアーチと一致することを確認することです。 シンボリックリンクで実行できることは他にもいくつかありますが、これらが最良の2つのオプションだと思います。 私の囲碁スキルはかなり低いですが、私はこれらの一方または両方をすぐに構築しようとします。

編集:スペル

ここで同じ問題。 CLI出力:

❯ nvm list

  * 8.4.0 (Currently using 64-bit executable)
    6.11.2
    6.10.0

❯ nvm uninstall 6.10.0
Uninstalling node v6.10.0...Error removing node v6.10.0
Manually remove C:\Users\darsain\AppData\Roaming\nvm\v6.10.0.

❯ nvm list

  * 8.4.0 (Currently using 64-bit executable)
    6.11.2
    6.10.0

uninstallコマンドを実行した後、 v6.10.0フォルダーにはnode.exeファイルしかありません

しかし、 v6.10.0バージョンは少し前にnvm1.1.1にインストールされたと思います。 今日は1.1.6にアップグレードしました。 ただし、アップグレード後に今日行ったノード6.11.2のインストールと削除は正常に機能しました。

これは確認できます。 また、ノードv6.9.1とnvm1.1.3を使用するWin10x64でも発生しました。

また、ノードv8.11.1およびnvm1.1.6を使用するWin10x64(バージョン1709)でも発生しました。

こんにちは、 @ coreybutler 、バグはWindows10 x64でも発生しました。 nvm use x.y.zコマンドを使用してnodejsのバージョンを切り替えると、xyzはアンインストールされませんが、abcのバージョンはnvm use使用できません

macOSで同じ問題が発生したため、再度開く必要があります

このページは役に立ちましたか?
0 / 5 - 0 評価