从 C# 代码安装 npm 失败

本文关键字:npm 失败 安装 代码 | 更新日期: 2023-09-27 18:34:46

我正在尝试使用进程从 C# 代码执行npm install。bundle 目录是 meteor build 的产物,在运行构建之前,npm 安装在 ''bundle''programs''server 内是强制性操作。

下面是 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();

变量中的错误代码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

当我通过相应目录中的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";

埃罗尔:

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

从 C# 代码安装 npm 失败

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

因此,您应该能够直接从文件夹中运行它,而无需node.exe

processInfo.FileName = @"C:'Program Files (x86)'nodejs'npm.cmd";
processInfo.Arguments = "install";

或者,如果您出于某种原因想要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";