最近,当我尝试从C#中的代码运行Node.js程序包时遇到问题。
首先,我在命令行中安装了一个软件包(注释适用于不熟悉nodejs的人)
// npm as the node package manager
// -g means "install globally"
// quicktype is the package that i'm trying to use, though it doesn't matter here which package you want to try with
npm install -g quicktype
正常的命令行调用:
// a simple usage of quicktype's functionality
quicktype --version
这是我尝试复制命令行调用的尝试:
var startinfo = new ProcessStartInfo();
proc.StartInfo.FileName = "quicktype";
proc.StartInfo.Arguments = "--version";
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.RedirectStandardOutput = true;
proc.Start ();
执行失败,错误是:系统找不到指定的文件。
我可以理解为什么它找不到程序,但仍然找不到正确的方法。
答案 0 :(得分:3)
我用C#写了一个简单的NodeJsServer
类,可以帮助您解决这些问题。它在GitHub here上可用。它有很多选项,您可以在特定目录中执行“ npm install”命令,或启动NodeJ,检查当前状态(正在运行,正在编译,正在启动,正在安装),最后停止NodeJ。检查quick example usage。
这是您要执行的操作的原始代码(主要从NodeJsServer
类复制):
// create the command-line process
var cmdProcess = new Process
{
StartInfo =
{
FileName = "cmd.exe",
UseShellExecute = false,
CreateNoWindow = true, // this is probably optional
ErrorDialog = false, // this is probably optional
RedirectStandardOutput = true,
RedirectStandardInput = true
}
};
// register for the output (for reading the output)
cmdProcess.OutputDataReceived += (object sender, DataReceivedEventArgs e) =>
{
string output = e.Data;
// inspect the output text here ...
};
// start the cmd process
cmdProcess.Start();
cmdProcess.BeginOutputReadLine();
// execute your command
cmdProcess.StandardInput.WriteLine("quicktype --version");