【问题标题】:Require('child_process') => cannot find Require / child_process + launch .batRequire('child_process') => 找不到 Require / child_process + 启动 .bat
【发布时间】:2016-08-11 19:59:12
【问题描述】:

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

我正在开发我的第一个 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 cannot find name 'require'。 或者只是 child_process => error cannot find module 'child_process'。

我绝对不是第一个遇到这种问题的人,但没有一个解决方案对我有用(import、import * as、require、declar function require(name:string)、var require: any; [. ..])。

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

服务器和客户端都在客户端,我只是用web作为人机界面

【问题讨论】:

  • 您希望 child_process 运行在客户端还是服务器端? child_process 和 require 是 node.js 的一部分,但不是客户端的一部分。
  • 它们中的任何一个都将在客户端上。我知道这一点,所以我想用服务器启动程序

标签: angularjs node.js require child-process


【解决方案1】:

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

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

【讨论】:

  • @Ryusekai - 你最好的选择是使用 Express 之类的东西来创建一个简单的 REST API,其中包含生成子进程的代码的路由处理程序。然后,您可以使用 Angular 的内置 $http 服务从您的应用远程调用该 API。
  • 当然可以!我忘了准确地说我想从服务器端启动它。你的意思是我试图在客户端启动它? => 我会检查什么是 Express,但我没有选择使用 AngluarJS
  • @Ryusekai - 如果它是您的 Angular 应用程序的一部分/在浏览器中运行,那是客户端,是的。 require 函数和 child_process 模块本身是 Node.js 的一部分,而不是标准的 JavaScript 规范,因此您不能在浏览器中原生使用它们。
  • 嗯,有道理!我能再问你一件事吗?如何在我的文件中区分客户端和服务器?
  • @Ryusekai - 我不确定你的意思是什么?如,文件结构?
猜你喜欢
  • 1970-01-01
  • 2016-09-01
  • 2019-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-17
  • 2020-03-09
相关资源
最近更新 更多