PowerShell更改了Node.js版本,导致无法识别npm命令

3
我有一个PowerShell脚本的问题。我想要建立一个基于node 10.17.0的项目,并将结果复制到另一个基于node 8.11.4的项目中并运行该项目。
   cd $PathToWebLibs

   Write-Host "..........Switching to node v10.17.0.........." -ForegroundColor Magenta
   nvm use 10.17.0

   Write-Host "..........Building WebLibs.........." -ForegroundColor Magenta
   npm run build_lib

   Write-Host "..........Copying files from ($PathToWebLibs\dist\rsp\core-ui) to ($PathToSFP\node_modules\@rsp) .........." -ForegroundColor Magenta

   cp -Recurse -Force ($PathToWebLibs + "\dist\rsp\core-ui") ($PathToSFP + "\node_modules\@rsp")

   cd $PathToSFP

   Write-Host "..........Switching to node v8.11.4.........." -ForegroundColor Magenta
   nvm use 8.11.4


   Write-Host "..........Starting SFP.........." -ForegroundColor Magenta
   npm run start

问题在于当nvm更改了node的版本时,npm无法被识别。当我手动输入命令时,逐个输入命令就可以解决这个问题。
我可以确认系统环境路径设置正确。我已经检查过了。 enter image description here

@Theo 是的,我做了这个,但对我来说它不起作用。问题不在于npm,而是在于powershell。当我运行简单的脚本时,只需将node更改为nvm,然后运行“npm -v”,并且在powershell中运行此脚本时,它不起作用。当我手动执行并逐个运行时,一切正常。 - mackosz
2个回答

1

nvm旨在由您的shell进程内运行,仅支持类POSIX的shell,例如bash,而不支持PowerShell:

nvm适用于任何符合POSIX标准的shell(sh、dash、ksh、zsh、bash),特别是在这些平台上:unix、macOS和windows WSL。

在类Unix平台和可能的WSL上,可以考虑使用Node.js版本管理器n作为替代方案,它不依赖于修改当前shell环境。

  • n-install允许直接从GitHub安装n;例如:
    curl -L https://git.io/n-install | bash
  • 然而,这种特定的安装方法,包括Node.js本身的安装,目前需要在PowerShell中进行额外的配置(在您的PowerShell $PROFILE文件中或者通过在Windows注册表中持久环境变量定义):$HOME/n/bin必须添加到$env:Path中,并且$env:PREFIX必须设置为$HOME/n(如果您从WSL之外运行PowerShell,请相应地调整路径)。

0

我使用PowerShell的Start-Sleep方法解决了这个问题,在nvm use XXX之后。它很有帮助,目前运行良好。


你能否添加更多关于如何完成这个任务的指导?! - K-Dawg
我发现30秒已经足够了。没有测试过是否有更短的时间也可以。 - sfuqua

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接