当前位置: 首页 > 面试题库 >

通过Grunt运行Node应用

田镜
2023-03-14
问题内容

我正在尝试将我的Node应用程序作为Grunt任务运行。但是,我需要将其作为子进程生成,以允许我并行运行watch任务。

这有效:

grunt.registerTask('start', function () {
  grunt.util.spawn(
    { cmd: 'node'
    , args: ['app.js']
    })

  grunt.task.run('watch:app')
})

但是,当监视任务检测到更改时,这将再次触发启动任务。在生成Node应用程序的另一个子进程之前,我需要杀死前一个进程。

但是,我不知道该如何终止进程。这样的事情不起作用:

var child

grunt.registerTask('start', function () {
  if (child) child.kill()
  child = grunt.util.spawn(
    { cmd: 'node'
    , args: ['app.js']
    })

  grunt.task.run('watch:app')
})

看起来:

  1. 即使将生成的进程存储在函数上下文之外的变量中,它也不会持久存在,因此,下次运行启动任务时,child是undefined
  2. child没有kill功能…

问题答案:

这是因为grunt-contrib-watch当前将所有任务运行作为子进程生成。因此,该变量child不在同一过程上下文中。很快grunt- contrib-watch@0.3.0就会发布,并带有一个nospawn选项。这将使您配置监视以在相同的上下文中生成任务运行,并使上面的示例正常工作。

请查看此问题以获取更多信息:

https://github.com/gruntjs/grunt-contrib-
watch/issues/45



 类似资料:
  • 我一直试图为我的webpack编译模块提供Grunt。我的所有文件至少需要1或2个全局(反应,主干和下划线)。

  • 当我通过命令行运行spring boot应用程序时,我面临的问题是 这很好,但在intellij中作为应用程序运行时,我发现以下错误- 可能的原因是什么,我应该在哪里查看配置修复? 关于这个模式还有其他问题,但没有一个提到这个错误- SpringBoot应用程序通过Maven运行良好,但不能通过IDEIntellijIDEA运行 ApplicationContextException:由于缺少Se

  • 问题内容: 在Node中使用CommonJS模块时,可以使用来检测命令行是否正在运行脚本。 当在Node中使用ES模块(带有标志)时,有什么等效的方法可以检测是否从命令行运行脚本? 问题答案: 目前还没有-(仍在试验中!)。尽管普遍的看法是,无论如何,这种检查都是不好的做法,您应该只为库和可执行文件提供单独的脚本,但是有一个想法是为此提供一个布尔属性。

  • 我之前做过,但现在无法通过selenium使用chrome。浏览器打开几秒钟后关闭,然后出现错误(大约5分钟后): 我使用以下代码运行浏览器(我一直使用): ChromeDrive目录位于PATH中。你可以在错误中看到的chrome和chrome驱动程序的版本。Python 3.7.0,硒==3.14.0。我的行为有什么问题? 顺便说一句,它可以与Firefox配合使用

  • 一些注意事项: 1。我最初使用的TestNG jar来自java项目中的maven repo。下面的所有方法都是用maven testNG jar和新的TestNG6.9.12下载进行测试的。 2。我可以从Eclipse中运行这个文件。只有当我尝试从命令行运行时才有问题。 3。最终目标是通过javafx应用程序按钮触发命令行来运行测试。如果提供的解决方案避免在cmd中键入绝对路径,因为应用程序将在

  • 问题内容: 我需要通过.bat文件运行Java应用程序。有人可以帮忙吗? 问题答案: 只需创建一个.bat文件,其中包含以下几行: