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

Pet*_*ner 14 windows launching-application node.js

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

我必须是术语的受害者,因为除了与node.js进行通信的子进程的产生之外,我找不到任何东西.我只是想为用户启动一个文件来查看,然后让他们决定如何处理它.

谢谢

Gnt*_*tem 18

你可以这样做

var cp = require("child_process");
cp.exec("document.docx"); // notice this without a callback..
process.exit(0); // exit this nodejs process
Run Code Online (Sandbox Code Playgroud)

不安全的想法,确保命令显示没有错误或任何不需要的输出

你应该添加回调参数 child_process.exec(cmd,function(error,stdout,stderr){})

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

  • 谢谢,这很有帮助。不过,我不需要添加 process.exit(0),因为包含的节点应用程序不应该消失。 (2认同)

Yal*_*ber 6

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

var exec = require('child_process').exec;
exec('mate hello.js');
Run Code Online (Sandbox Code Playgroud)


小智 5

var childProcess = require('child_process');
childProcess.exec('start Example.xlsx', function (err, stdout, stderr) {
        if (err) {
        console.error(err);
        return;
    }
    console.log(stdout);
    process.exit(0);// exit process once it is opened
})
Run Code Online (Sandbox Code Playgroud)

强调“出口”的位置。这在 Windows 中可以正确执行。