从 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
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";