从C#代码进行npm安装失败

eom*_*off 1 c# bundle process npm-install

我正在尝试npm install使用过程从C#代码执行。bundle目录是流星构建的产物,在运行构建之前,必须在\ bundle \ programs \ server内部安装npm。

这是C#代码:

processInfo.CreateNoWindow = true;
processInfo.UseShellExecute = false;
processInfo.RedirectStandardError = true;
processInfo.RedirectStandardOutput = true;
processInfo.RedirectStandardInput = true;
processInfo.WorkingDirectory = @"C:\some_service\bundle\programs\server";
processInfo.FileName = @"C:\Program Files (x86)\nodejs\node.exe";
processInfo.Arguments = "npm install";
process = Process.Start(processInfo);
process.WaitForExit();

stderr_str = process.StandardError.ReadToEnd();
stdout_str = process.StandardOutput.ReadToEnd();
Run Code Online (Sandbox Code Playgroud)

并且stderr_str 变量中的错误代码是:

    module.js:340
    throw err;
          ^
Error: Cannot find module 'C:\some_service\bundle\programs\server\npm'
    at Function.Module._resolveFilename (module.js:338:15)
    at Function.Module._load (module.js:280:25)
    at Function.Module.runMain (module.js:497:10)
    at startup (node.js:119:16)
    at node.js:935:3
Run Code Online (Sandbox Code Playgroud)

当我通过相应目录中的cms手动运行此命令时,它工作正常。为什么C#会有问题,还是我做对了?

任何建议或提示都会有所帮助。

编辑1:

用答案更改运行后,出现错误:

变更:

    processInfo.FileName =  @"C:\Program Files (x86)\nodejs\node.exe";
    processInfo.Arguments = @"C:\Program Files (x86)\nodejs\node_modules\npm\bin\npm-cli.js install";
Run Code Online (Sandbox Code Playgroud)

错误:

module.js:340
    throw err;
          ^
Error: Cannot find module 'C:\Program'
    at Function.Module._resolveFilename (module.js:338:15)
    at Function.Module._load (module.js:280:25)
    at Function.Module.runMain (module.js:497:10)
    at startup (node.js:119:16)
    at node.js:935:3
Run Code Online (Sandbox Code Playgroud)

Sza*_*zsi 5

npm实际上是.cmd旁边的文件node.exe

因此,您应该可以直接从文件夹中直接运行该文件,而无需安装node.exe

processInfo.FileName = @"C:\Program Files (x86)\nodejs\npm.cmd";
processInfo.Arguments = "install";
Run Code Online (Sandbox Code Playgroud)

或者,如果node.exe出于某些原因,您应该可以执行以下操作:

processInfo.FileName = @"C:\Program Files (x86)\nodejs\node.exe";
processInfo.Arguments = "\"C:\\Program Files (x86)\\nodejs\\node_modules\\npm\\bin\\npm-cli.js\" install";
Run Code Online (Sandbox Code Playgroud)