即使在系统路径中,也无法在PowerShell中调用npm

时间:2019-10-22 14:04:26

标签: node.js windows powershell npm path-variables

这是我的路径:

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 Server\130\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

1 个答案:

答案 0 :(得分:0)

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
  • Or :将npm调用为npm.cmd,将node调用为node.exe

您的症状暗示以下内容:

  • 您的$env:PATH变量中有一个目录,其中包含名为 just npm-且没有文件扩展名的文件。

  • 并且该目录也不包含具有相同文件但具有可执行文件扩展名的文件,例如{{1 }}或.cmd ...

  • ,并且该目录在.exe中排在 first 之前,在$env:PATH一起归档的其他任何目录之前可执行扩展名,例如npm,...

在Windows上的正常NodeJS安装中(默认情况下安装在npm.cmd中),安装文件夹包含一个用于调用npm的$env:ProgramFiles\NodeJs批处理文件,以及位于同一文件夹中的Unix shell脚本,其名称仅为{ {1}}-没有文件扩展名

npm.cmd优先于无扩展名的npm,因此仅调用npm.cmd即可正常工作。

npm是一个目录,其中包含NodeM的 Linux 安装。

在Linux安装中,显然不需要 batch文件,因此仅存在无扩展名的npm Unix shell脚本。

由于此目录位于您的C:\Users\caio1\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\home\caiodomingos\.nvm\versions\node\v10.16.3\bin值中的常规NodeJS安装目录(npm之前 之前,因此PowerShell会在您提交时尝试调用无扩展名的Unix shell脚本D:\Program Files\nodejs,可以预测-失败。

具体来说,由于$env:PATH文件没有扩展名 executable ,因此PowerShell会将其作为 document 而不是可执行文件来调用,并且无法执行因此,因为没有应用程序在Windows(图形)外壳程序(文件资源管理器)中注册,无法打开没有文件扩展名的文档。