C# 如何从C运行nodejs包#

C# 如何从C运行nodejs包#,c#,node.js,C#,Node.js,最近,我在尝试从C#中的代码运行nodejs包时遇到了一个问题 首先,我在命令行中安装了一个包(该注释是针对不熟悉nodejs的人的) 正常的命令行调用: // a simple usage of quicktype's functionality quicktype --version var startinfo = new ProcessStartInfo(); proc.StartInfo.FileName = "quicktype"; proc.StartInfo.Arguments

最近,我在尝试从C#中的代码运行nodejs包时遇到了一个问题

首先,我在命令行中安装了一个包(该注释是针对不熟悉nodejs的人的)

正常的命令行调用:

// 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 ();
下面是我复制命令行调用的尝试:

// 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 ();
无法执行,错误为:系统找不到指定的文件


我可以理解为什么它找不到程序,但仍然无法找到正确的方法。

我已经用C语言编写了一个简单的
NodeJsServer
类,可以帮助您解决这些问题。它在GitHub上提供。它有很多选项,您可以在特定目录中执行“npm install”命令,或者启动NodeJs,检查当前状态(是否正在运行、是否正在编译、是否正在启动、是否正在安装),最后停止NodeJs。检查一下

这是您尝试执行的原始代码(主要从
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");

查看一下您应该能够从c执行node.js#首先,安装不是
npm-g
,而是
npm install-g
,因此您缺少安装字,它没有安装您的package@MarkiianBenovskyi谢谢你指出,我编辑了这篇文章来纠正,我是不熟悉nodejs的人之一:D@Jorge因此,不可能只向shell传递一个“字符串”并让它处理其余部分,就像我们在控制台中键入时一样?