2013-07-18 139 views
8

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

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

感谢

回答

11

你可以做到这一点

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

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

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

接下来你可以处理事件,所以你不会阻止脚本的执行,甚至无法使用一个外部node.js脚本,用于启动并处理从“主”脚本产生的进程的输出。

+0

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

4

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

var exec = require('child_process').exec; 
exec('mate hello.js'); 
1
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 
}) 

在哪里 '退出' 被称为重点。这在Windows中正确执行。

+0

这可以在客户端使用ionic2应用程序吗?该版本说它找不到child_process。谢谢 – Marie

相关问题