为什么我在使用 Rust Command::new("npm") 运行“npm -v”命令时出现程序未找到错误?

问题描述 投票:0回答:1

我正在尝试使用 Rust

std::process::command
测试版本检查和其他功能。 其他命令工作正常,但当我尝试调用
npm -v
时,出现程序未找到错误。

  1. My Error
  2. My Code
  3. NPM Test

我想要

npm -v
命令可使用 rust 运行

npm rust command
1个回答
0
投票

问题是

npm
不只是
npm
,实际上有多个(脚本):

  • npm
  • npm.cmd
  • npm.ps1

当您在终端中执行

npm
时,您的终端就会变得智能并自动选择它识别的终端。同样,如果您(在 Windows 上)执行
foo
,它将自动运行
foo.exe

您可以通过将

"npm"
更改为
"npm.cmd"
来解决您的问题。为了让它对其他操作系统更加灵活,你可以使用这样的函数:

pub fn npm() -> Command {
    #[cfg(windows)]
    const NPM: &str = "npm.cmd";
    #[cfg(not(windows))]
    const NPM: &str = "npm";

    Command::new(NPM)
}

然后您只需将

Command::new("npm")
替换为
npm()

© www.soinside.com 2019 - 2024. All rights reserved.