无法在 PowerShell 中调用 npm,即使它在系统路径中
Cannot invoke npm in PowerShell, even though it is in the system's path
这是我的路径:
PS> $Env:Path
C:\Python27\;C:\Python27\Scripts;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;D:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;D:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR;C:\Program Files\dotnet\;C:\Program Files\Microsoft SQL Server0\Tools\Binn\;D:\cmder;C:\ProgramData\chocolatey\bin;C:\Program Files\Git\cmd;C:\Users\caio1\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\home\caiodomingos\.nvm\versions\node\v10.16.3\bin;C:\Users\caio1\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\home\caiodomingos\.nvm\versions\node\v10.16.3\lib;D:\Program Files\nodejs\;C:\Users\caio1\AppData\Local\Microsoft\WindowsApps;%NVM_HOME%;%NVM_SYMLINK%;C:\Program Files\Java\jdk1.8.0_221\bin;C:\gradle;C:\android-sdk\tools\bin;;C:\Users\caio1\AppData\Local\Programs\Microsoft VS Code\bin;C:\Users\caio1\AppData\Roaming\np
请注意以下与 NodJS 相关的条目,按顺序排列:
C:\Users\caio1\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\home\caiodomingos\.nvm\versions\node\v10.16.3\bin
C:\Users\caio1\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\home\caiodomingos\.nvm\versions\node\v10.16.3\lib
D:\Program Files\nodejs\
但是当我输入 npm -v
时,
Powershell 抛出此错误:
Program 'npm' failed to run: No application is associated with the specified file
for this operation.
At line:1 char:1
+ npm
+ ~~~.
At line:1 char:1
+ npm
+ ~~~
+ CategoryInfo : ResourceUnavailable: (:) [], ApplicationFailedException
+ FullyQualifiedErrorId : NativeCommandFailed
tl;博士:
- 两者之一:从您的
$env:PATH
变量中删除以下条目。
C:\Users\caio1\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\home\caiodomingos\.nvm\versions\node\v10.16.3\bin
C:\Users\caio1\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\home\caiodomingos\.nvm\versions\node\v10.16.3\lib
- 或:调用
npm
作为npm.cmd
和node
作为node.exe
您的症状暗示如下:
您的 $env:PATH
变量中有一个目录包含名为 just npm
- without 的文件文件扩展名...
和该目录不也包含具有相同但可执行文件的文件文件扩展名 ,例如 .cmd
或 .exe
...
和 该目录在 $env:PATH
中 第一个 列出,在 [=] 的任何其他目录之前12=] 文件 具有 可执行扩展名,例如 npm.cmd
, ...
在 Windows 上的正常 NodeJS 安装中(默认安装在 $env:ProgramFiles\NodeJs
中),安装文件夹包含一个 npm.cmd
用于调用 npm 的批处理文件,以及一个 Unix [=112] =] 脚本在同一文件夹中,仅命名为 npm
- 没有文件扩展名 .
npm.cmd
优先于无扩展名 npm
,因此仅调用 npm
会按预期工作。
C:\Users\caio1\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\home\caiodomingos\.nvm\versions\node\v10.16.3\bin
是包含 Linux NodeJs 安装的目录。
在Linux安装中,显然不需要批处理文件,所以只需要一个无扩展名npm
Unix shell 脚本存在。
由于此目录在 $env:PATH
值中 在 您的常规 NodeJS 安装目录 (D:\Program Files\nodejs
) 之前,PowerShell 尝试调用无扩展的 Unix shell 脚本,当您提交 npm
时,可预见的是,它会失败。
具体来说,因为 npm
文件没有 可执行文件 文件扩展名,PowerShell 将其作为 文档 而不是作为可执行文件,但未能这样做,因为没有应用程序注册到 Windows(图形)shell(文件资源管理器)以打开没有文件扩展名的文档。
这是我的路径:
PS> $Env:Path
C:\Python27\;C:\Python27\Scripts;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;D:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;D:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR;C:\Program Files\dotnet\;C:\Program Files\Microsoft SQL Server0\Tools\Binn\;D:\cmder;C:\ProgramData\chocolatey\bin;C:\Program Files\Git\cmd;C:\Users\caio1\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\home\caiodomingos\.nvm\versions\node\v10.16.3\bin;C:\Users\caio1\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\home\caiodomingos\.nvm\versions\node\v10.16.3\lib;D:\Program Files\nodejs\;C:\Users\caio1\AppData\Local\Microsoft\WindowsApps;%NVM_HOME%;%NVM_SYMLINK%;C:\Program Files\Java\jdk1.8.0_221\bin;C:\gradle;C:\android-sdk\tools\bin;;C:\Users\caio1\AppData\Local\Programs\Microsoft VS Code\bin;C:\Users\caio1\AppData\Roaming\np
请注意以下与 NodJS 相关的条目,按顺序排列:
C:\Users\caio1\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\home\caiodomingos\.nvm\versions\node\v10.16.3\bin
C:\Users\caio1\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\home\caiodomingos\.nvm\versions\node\v10.16.3\lib
D:\Program Files\nodejs\
但是当我输入 npm -v
时,
Powershell 抛出此错误:
Program 'npm' failed to run: No application is associated with the specified file
for this operation.
At line:1 char:1
+ npm
+ ~~~.
At line:1 char:1
+ npm
+ ~~~
+ CategoryInfo : ResourceUnavailable: (:) [], ApplicationFailedException
+ FullyQualifiedErrorId : NativeCommandFailed
tl;博士:
- 两者之一:从您的
$env:PATH
变量中删除以下条目。
C:\Users\caio1\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\home\caiodomingos\.nvm\versions\node\v10.16.3\bin
C:\Users\caio1\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\home\caiodomingos\.nvm\versions\node\v10.16.3\lib
- 或:调用
npm
作为npm.cmd
和node
作为node.exe
您的症状暗示如下:
您的
$env:PATH
变量中有一个目录包含名为 justnpm
- without 的文件文件扩展名...和该目录不也包含具有相同但可执行文件的文件文件扩展名 ,例如
.cmd
或.exe
...和 该目录在
$env:PATH
中 第一个 列出,在 [=] 的任何其他目录之前12=] 文件 具有 可执行扩展名,例如npm.cmd
, ...
在 Windows 上的正常 NodeJS 安装中(默认安装在 $env:ProgramFiles\NodeJs
中),安装文件夹包含一个 npm.cmd
用于调用 npm 的批处理文件,以及一个 Unix [=112] =] 脚本在同一文件夹中,仅命名为 npm
- 没有文件扩展名 .
npm.cmd
优先于无扩展名 npm
,因此仅调用 npm
会按预期工作。
C:\Users\caio1\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\home\caiodomingos\.nvm\versions\node\v10.16.3\bin
是包含 Linux NodeJs 安装的目录。
在Linux安装中,显然不需要批处理文件,所以只需要一个无扩展名npm
Unix shell 脚本存在。
由于此目录在 $env:PATH
值中 在 您的常规 NodeJS 安装目录 (D:\Program Files\nodejs
) 之前,PowerShell 尝试调用无扩展的 Unix shell 脚本,当您提交 npm
时,可预见的是,它会失败。
具体来说,因为 npm
文件没有 可执行文件 文件扩展名,PowerShell 将其作为 文档 而不是作为可执行文件,但未能这样做,因为没有应用程序注册到 Windows(图形)shell(文件资源管理器)以打开没有文件扩展名的文档。