Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 无法在PowerShell中调用npm,即使它在系统中';s路径_Node.js_Windows_Powershell_Npm_Path Variables - Fatal编程技术网

Node.js 无法在PowerShell中调用npm,即使它在系统中';s路径

Node.js 无法在PowerShell中调用npm,即使它在系统中';s路径,node.js,windows,powershell,npm,path-variables,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:

这是我的路径:

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
请按顺序注意以下与NodeJS相关的条目:

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引发以下错误:

程序“npm”无法运行:没有与指定文件关联的应用程序
为这次行动。
第1行字符:1
+npm
+ ~~~.
第1行字符:1
+npm
+ ~~~
+类别信息:ResourceUnavailable:(:)[],ApplicationFailedException
+FullyQualifiedErrorId:NativeCommand失败

tl;博士

  • 或者:从
    $env:PATH
    变量中删除以下条目
C:\Users\caio1\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows\u 79rhkp1fndgsc\LocalState\rootfs\home\caiodmingos\.nvm\versions\node\v10.16.3\bin
C:\Users\caio1\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows\u 79rhkp1fndgsc\LocalState\rootfs\home\caiodomingos\.nvm\versions\node\v10.16.3\lib
  • 或者:调用
    npm
    as
    npm.cmd
    node
    as
    node.exe

您的症状包括以下几点:

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

  • 而且该目录也不包含具有相同扩展名的文件,而是包含可执行文件扩展名的文件,例如
    .cmd
    .exe

  • 并且该目录在
    $env:PATH
    中列在第一位,然后是具有可执行扩展名的
    npm
    文件的任何其他目录,例如
    npm.cmd

在Windows上的普通NodeJS安装(默认情况下安装在
$env:ProgramFiles\NodeJS
中)中,安装文件夹包含一个
npm.cmd
批处理文件,用于调用npm,并在名为just
npm
的同一文件夹中包含一个Unix shell脚本,但没有扩展名

npm.cmd
优先于扩展名less
npm
,因此只调用
npm
就可以了

C:\Users\caio1\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows\u 79rhkp1fndgsc\LocalState\rootfs\home\caiodomingos\.nvm\versions\node\v10.16.3\bin
是一个包含Linux节点安装的目录

在Linux安装中,显然不需要批处理文件,因此只存在一个无扩展名的
npm
unixshell脚本

由于在
$env:PATH
值中,此目录位于常规NodeJS安装目录(
D:\Program Files\NodeJS
)之前,因此PowerShell在您提交
npm
时会尝试调用无扩展名Unix shell脚本,这是意料之中的失败


具体地说,由于
npm
文件没有可执行文件扩展名,PowerShell将其作为文档而不是可执行文件调用,并且由于没有向Windows(图形)shell(文件资源管理器)注册任何应用程序,因此调用失败用于打开没有文件扩展名的文档。

基本问题是npm是否安装在上述路径中?在我的简短搜索中,默认文件夹应该是C:\Program Files\nodejs\node\U modules\npm,但path变量中只有D:\Program Files\nodejs。@OlafReitz:No,
C:\Program Files\nodejs
(或等效项)是正确的路径条目
npm.cmd
位于该文件夹中。我很高兴听到这个消息,@CaioDomingos。感谢您接受我们的建议。