Windows 从node.js启动外部应用程序

Windows 从node.js启动外部应用程序,windows,node.js,launching-application,Windows,Node.js,Launching Application,我正在编写一个桌面web应用程序,它使用node.js访问本地文件系统。我目前可以使用node.js打开文件并将其复制到硬盘上的不同位置。我还想做的是允许用户使用与文件类型关联的应用程序打开特定文件。换句话说,如果用户在Windows环境中选择“myfile.doc”,它将使用该文件启动MSWord 我一定是术语的牺牲品,因为除了与node.js通信的子进程的产生之外,我什么都找不到。我只想启动一个文件供用户查看,然后让他们决定如何处理它 谢谢你能做到的 var cp = require("ch

我正在编写一个桌面web应用程序,它使用node.js访问本地文件系统。我目前可以使用node.js打开文件并将其复制到硬盘上的不同位置。我还想做的是允许用户使用与文件类型关联的应用程序打开特定文件。换句话说,如果用户在Windows环境中选择“myfile.doc”,它将使用该文件启动MSWord

我一定是术语的牺牲品,因为除了与node.js通信的子进程的产生之外,我什么都找不到。我只想启动一个文件供用户查看,然后让他们决定如何处理它

谢谢

你能做到的

var cp = require("child_process");
cp.exec("document.docx"); // notice this without a callback..
process.exit(0); // exit this nodejs process
确保命令不显示错误或任何不需要的输出是不安全的

您应该添加回调参数
child\u process.exec(cmd,function(error,stdout,stderr){})


接下来,您可以处理事件,这样就不会阻止脚本的执行,甚至不会使用外部node.js脚本来启动和处理从“主”脚本生成的进程的输出。

在下面的示例中,我使用textmate“mate”命令来编辑文件hello.js,可以使用child_process.exec运行任何命令,但要在其中打开文件的应用程序应提供命令行选项

var exec = require('child_process').exec;
exec('mate hello.js');
强调“退出”的位置。这将在windows中正确执行。

只需从命令promp调用您的文件(任何扩展名为.exe的文件),或通过编程方式:

var exec = require('child_process').exec;
exec('C:\\Users\\Path\\to\\File.js', function (err, stdout, stderr) {
    if (err) {
        throw err;
    }
})
如果要运行不带扩展名的文件,可以执行几乎相同的操作,如下所示:

var exec = require('child_process').exec;
exec('start C:\\Users\\Path\\to\\File', function (err, stdout, stderr) {
    if (err) {
        throw err;
    }
})

如您所见,我们使用
start
打开文件,让windows(或windows让我们)选择应用程序。

谢谢,这很有帮助。我不需要添加进程。但是退出(0),因为包含节点的应用程序不应该消失。这可以在ionic2应用程序的客户端上使用吗?构建说它找不到子进程。谢谢
var exec = require('child_process').exec;
exec('start C:\\Users\\Path\\to\\File', function (err, stdout, stderr) {
    if (err) {
        throw err;
    }
})