Require('child_process') => 找不到 Require / child_process + launch .bat

Require('child_process') => cannot find Require / child_process + launch .bat

我已经在论坛上搜索了 3 天的方法来运行我的程序,但它仍然不起作用......

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

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

    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 => error TS2304 cannot find name 'require'. 或者只是 child_process => error cannot find module 'child_process'.

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

也许对你们中的一些人来说解决方案是显而易见的;我正在复习这种情况下的课程。

Server和Client在客户端,我只是用web作为HMI

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

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