You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用node-windows实现Node.js自启动Windows服务并解决请求无响应问题

解决Node.js Windows服务无法自动接收请求的问题

可能的原因及修复步骤

1. 服务运行权限不足

Windows服务默认以Local System账户运行,该账户可能缺少访问项目文件、数据库或网络的权限,导致程序启动后无法正常处理请求。

  • 修复:打开服务管理器(运行services.msc),找到Academy Service2,右键→属性→登录,选择本地系统账户并勾选允许服务与桌面交互;也可以改用拥有项目目录读写、数据库访问权限的本地/域账户。

2. 环境变量未正确加载

代码中配置的环境变量,服务启动时可能未被正确读取,导致程序无法连接数据库或监听指定端口。

  • 修复:
    • 把环境变量直接写入index.js,或使用.env文件配合dotenv包加载,确保程序启动时能获取到必要配置;
    • 在Service配置中添加envOptions: { env: "user" },让服务加载当前用户的环境变量(注意权限匹配)。

3. 工作目录不匹配

服务启动时的默认工作目录并非项目根目录,可能导致程序找不到依赖文件(如静态资源、配置文件)。

  • 修复:在Service配置里添加workingDirectory: "C:\\Users\\Ata\\Desktop\\Academy_APP",指定服务的工作目录为项目根目录。

4. 监听地址或端口问题

程序若仅监听localhost(127.0.0.1),外部请求无法访问;或端口被其他程序占用,导致服务无法正常启动。

  • 修复:
    • 在index.js中将监听地址改为0.0.0.0,让服务接收所有网卡的请求:app.listen(5055, '0.0.0.0', () => { ... });
    • 运行netstat -ano | findstr :5055检查端口占用情况,更换未被占用的端口。

5. 查看日志定位错误

node-windows会自动生成日志文件,可通过日志排查具体问题:

  • 日志默认路径:C:\Users\Ata\AppData\Roaming\node-windows\logs,查看Academy Service2.out.log和Academy Service2.err.log,里面会记录程序启动失败或运行时的错误信息。

调整后的示例代码

var Service = require("node-windows").Service;

const svc = new Service({
  name: "Academy Service2",
  description: "My Node.js application as a Windows service.",
  script: "C:\\Users\\Ata\\Desktop\\Academy_APP\\index.js",
  workingDirectory: "C:\\Users\\Ata\\Desktop\\Academy_APP", // 指定工作目录
  env: {
    PORT: 5055,
    DB_HOST: "localhost",
    DB_PORT: 5432,
    DB_DATABASE: "academy",
    DB_USER: "postgres",
    DB_PASSWORD: "*******",
    JWT_SECRET_TOKEN: "abcdndgjdfkdfdkdfgdg",
  }
});

svc.on("install", function () {
  svc.start();
});

// 添加错误监听,便于即时排查问题
svc.on("error", function (err) {
  console.error("服务操作错误:", err);
});

svc.install();

额外注意

  • 修改配置后,先运行svc.uninstall()卸载旧服务,再重新执行安装脚本;
  • 安装/卸载脚本需以管理员身份运行,避免权限不足导致操作失败。

内容的提问来源于stack exchange,提问作者Atakan Ertürk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 02:37:31