要求('child_process')=>找不到Require / child_process +启动.bat

时间:2016-04-19 14:45:50

标签: angularjs node.js require child-process

我已经在论坛上搜索了一个让我的程序正常工作的方式,但它仍然无效......

我正在开发我的第一个AngularJS项目,当用户点击图片时,我需要启动外部程序

我有一个名为tool-list的模块,在我的tool-list.component.ts中,我导出了一个名为ToolListComponent的类。 在本课程中,我有我的功能来启动我的外部程序。

    launchtool(){
      alert("I'm trying to launch test.bat!");
      const spawn = require('child_process').spawn;
      //const bat = spawn('start', ['./TrashCode/test.bat']);
      //const bat = spawn('cmd.exe', ['start', './TrashCode/test.bat']);
      //var exec = child_process.spawn('start', './TrashCode/test.bat', {detached: true});
      alert("It works!");
    }

在评论中我保留了一些我试过的内容。

我的问题:当我使用 require => 错误TS2304找不到名称'require'。 或者只是 child_process => 错误无法找到模块'child_process'。

我绝对不是第一个遇到这种问题的人,但这个解决方案都不适合我(导入,导入* as,require,声明函数require(name:string),var require:any; [。 ..])。

对于你们中的一些人来说,解决方案可能很明显;在这种情况下,我正在复习我的课程。

服务器和客户端将在客户端,我只是使用Web作为HMI

1 个答案:

答案 0 :(得分:0)

您无法通过Web浏览器运行子进程,除非您的应用程序在桌面应用程序容器中运行,例如Electron(这使得Node模块在其Web运行时中可用)。允许浏览器执行shell脚本是非常不安全的 - 假设弹出窗口能够下载.bat并立即在你的机器上运行它......

也就是说,如果您希望批处理文件在服务器上运行 并且只是由客户端触发,这是完全可行的 - 只需调用child_process.spawn()以响应REST调用某种。