window通过vbs+bat实现自动在后台运行nodejs application

首先,需要明确一点:该技术只适用于Windows环境。

1. 准备vbs和bat文件

在项目根目录下创建两个文件,一个是vbs文件,一个是bat文件。分别命名为run.vbsstart.bat

run.vbs

vbs文件是用来调用bat文件的,它需要同时在后台运行,因此我们需要使用以下的代码:

Set WinScriptHost = CreateObject("WScript.Shell")
WinScriptHost.Run Chr(34) & ".\start.bat" & Chr(34), 0
Set WinScriptHost = Nothing

这段代码创建了一个WScript Shell对象,并运行start.bat。注意,这里使用了Chr(34)将文件路径用双引号括起来,以防止路径中出现空格和特殊字符时出现问题。

start.bat

bat文件执行了Node.js应用程序,并将输出重定向到文件(我们可以随时查看日志)。这里我们使用forever,它是一个简单的工具,可以让我们方便地在后台运行Node.js应用。

@echo off
set LOGFILE=logs\server.log
start /b node_modules\.bin\forever start index.js -l %LOGFILE% -o %LOGFILE% -e %LOGFILE%

这个bat文件会执行以下操作:

  1. 定义变量LOGFILE,以指定日志文件的位置
  2. 启动Forever进程并开始监听Node.js应用程序

  3. -l选项指定日志文件的位置

  4. -o选项指定输出日志的位置
  5. -e选项指定错误日志的位置

现在,我们假设该项目目录结构如下:

project/
  run.vbs
  start.bat
  index.js
  node_modules/
  logs/
    server.log

2. 使用vbs+bat运行Node.js应用

我们需要将run.vbs添加到Windows任务计划程序中以便于自动运行。通常可以使用Windows预设任务,但此处进行简单介绍.

手动添加计划任务

  1. 打开“程序和功能”窗口
  2. 点击左侧菜单中的“管理 Windows任务计划”(需要管理员权限)
  3. 在任务计划程序库中,右击空白位置,选择“创建基本任务...”
  4. 输入任务名称,例如“Start Node.js”
  5. 根据需要分配触发器(例如,每次启动Windows或通过计划调度)
  6. 在“操作”选项卡中,选择“启动程序”,并输入以下信息:

  7. 程序或脚本:C:\Windows\System32\cscript.exe

  8. 参数:run.vbs

  9. 单击下一步/完成即可。

使用Node.js模块完成自动添加计划任务

除了手动添加计划任务外,还可以使用node-schedule模块自动添加计划任务。首先,我们需要安装该模块:

npm install node-schedule

然后,我们需要添加以下代码:

const schedule = require('node-schedule')
const path = require('path')

const vbsScriptPath = path.join(__dirname, 'run.vbs')
const taskName = 'Start Node.js'

const scheduleConfig = {
  minute: 0,     // 每小时的0分执行
  hour: '*',     // 每个小时
  dayOfMonth: '*', // 每个月的每天
  month: '*',    // 每个月
  dayOfWeek: '*',   // 每个工作日
}

schedule.scheduleJob(scheduleConfig, function () {
  const { exec } = require('child_process')
  const command = `schtasks /create /ru SYSTEM /tn "${taskName}" /sc ONSTART /tr "${vbsScriptPath}"`

  exec(command, (error, stdout, stderr) => {
    if (error) {
      console.error(`exec error: ${error}`)
      return
    }
    console.log(`stdout: ${stdout}`)
    console.error(`stderr: ${stderr}`)
  })
})

这段代码使用node-schedulescheduleJob()方法来定义计划任务,然后使用child_process模块的exec()方法来执行命令来创建计划任务。

最后,将index.js添加到Windows服务中,以确保Node.js应用程序在后台持久运行即可。

示例说明

我们现在来举一个具体的例子,假设我们正在开发一个在线订餐应用程序。我们使用Node.js编写了服务器端应用程序,并希望在Windows服务器上以后台模式运行它。

像上面那样创建vbs和bat文件,然后通过计划任务或node-schedule模块执行它,即可自动在后台运行Node.js应用程序,并将输出重定向到日志文件。

这种技术可以应用于任何支持Node.js的应用程序,可方便地在Windows环境下自动化运行Node.js应用程序。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:window通过vbs+bat实现自动在后台运行nodejs application - Python技术站

(0)
上一篇 2023年6月8日
下一篇 2023年6月8日

相关文章

  • koa2的中间件功能及应用示例

    Koa2的中间件功能及应用示例 1. Koa2中间件的概念和作用 Koa2是一种轻量级的Web开发框架,使用Node.js平台的HTTP服务构建。类似于Express,它主要是通过中间件函数来处理 HTTP 请求。Koa2中间件是一个函数,它可以带有三个参数,分别为context对象、next函数和可选的错误处理函数。其中,context对象是一个对HTTP…

    node js 2023年6月8日
    00
  • 详解nodejs中的process进程

    下面是关于”详解Node.js中的Process进程”的完整攻略。 简介 Node.js是一个基于Chrome V8引擎的JavaScript运行环境,它提供了一些非常有用的全局对象,其中一个非常重要的对象就是Process。Process用于控制当前Node.js进程的状态和行为。 状态 Process对象包含了当前Node.js进程的状态信息,例如进程I…

    node js 2023年6月8日
    00
  • Node.js API详解之 console模块用法详解

    Node.js API详解之 console模块用法详解 简介 首先,Node.jsConsole 模块提供了一个简单的调试控制台,类似于 Web 浏览器提供的 JavaScript 控制台。 Console 模块中提供了许多有用的方法,可以用于打印和调试 Node.js 应用程序。 安装 Node.js console 模块是默认安装的,所以您只需要导入即…

    node js 2023年6月8日
    00
  • Node.js使用gm拼装sprite图片

    如何使用 Node.js 和 gm 模块拼装 sprite 图片?下面是完整攻略: 安装依赖 首先,要确保 Node.js 和 gm 模块已经安装到了本地开发环境中,如果没有的话可以使用以下命令进行安装。 # 安装 Node.js sudo apt-get install nodejs # 安装 gm 模块 sudo npm install gm –sav…

    node js 2023年6月8日
    00
  • Node.js fs模块(文件模块)创建、删除目录(文件)读取写入文件流的方法

    Node.js中的fs模块(文件模块)提供了许多与文件系统交互的方法。包括创建、删除目录(文件),读取、写入文件等操作。下面将介绍如何使用fs模块进行这些操作。 创建目录 在Node.js中使用fs模块中的fs.mkdir()方法来创建一个目录。该方法接收路径和控制选项作为参数。例如: const fs = require(‘fs’); fs.mkdir(‘…

    node js 2023年6月8日
    00
  • nodeJS删除文件方法示例

    当需要在 Node.js 中删除一个文件时,可以使用 fs.unlink() 方法。 步骤 删除文件的步骤如下: 在 Node.js 中使用 fs.unlink() 方法 传递正确的文件路径作为参数 如果出现错误,需要捕获并处理异常 示例1 const fs = require(‘fs’); fs.unlink(‘path/to/file’, (err) =…

    node js 2023年6月8日
    00
  • Nodejs回调加超时限制两种实现方法

    下面我将为你详细讲解“Nodejs回调加超时限制两种实现方法”的攻略。 什么是回调加超时限制? 回调是 Node.js 中非常重要的一个概念,它代表了当一个函数执行完毕后执行的逻辑。而回调加超时限制则是指当一个函数执行时间过长时,我们需要主动中断这个函数的执行,并返回一个错误信息,避免因为函数卡死导致整个程序无法响应。回调加超时限制可以让程序在执行错误时更加…

    node js 2023年6月8日
    00
  • 三分钟教会你用nodejs操作mysql数据库

    使用 Node.js 操作 MySQL 数据库是一件非常重要的事情,特别是对于 Node.js 开发人员来说,因为这可以帮助他们更好地处理和管理数据。在下面的对话中,我将分享一个简单的三分钟攻略,以向您展示如何使用 Node.js 操作 MySQL 数据库。 1. 安装 MySQL 首先,我们需要在本地计算机上安装 MySQL。MySQL 是一个流行的开源数…

    node js 2023年6月8日
    00
合作推广
合作推广
分享本页
返回顶部