1
我想从C#代码使用进程执行npm install
。 bundle目录是meteor build的产品,在运行构建之前,\ bundle \ programs \ server中的npm install是必需的操作。从C#代码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();
而且在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#中的问题,还是我正在做这件事?
任何建议或提示将有所帮助。
EDIT1:
与答案改变我运行后错误:
变化:
processInfo.FileName = @"C:\Program Files (x86)\nodejs\node.exe";
processInfo.Arguments = @"C:\Program Files (x86)\nodejs\node_modules\npm\bin\npm-cli.js install";
Erorr:
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
请检查我的编辑是利用node.exe – eomeroff
第一个建议与防范机制。 cmd永远运行。 – eomeroff
请尝试与我在答案中发布的相同方式。我在npm-cli.js的路径中添加了引号。由于程序文件中有空格,因此需要使用引号。这就是为什么在错误信息中它告诉你它找不到''C:\ Program''。它切断了其余的部分。 –