如何让ts-node持续运行?原node-windows服务方案无法兼容
解决TypeScript项目通过ts-node作为Windows服务持续运行的方案
方案一:编译TypeScript为JavaScript后使用node-windows
- 确认
tsconfig.json配置正确,比如设置outDir指定编译输出目录(例如"outDir": "./dist") - 执行编译命令将TS文件转为JS:
tsc - 修改node-windows的服务配置,将启动脚本指向编译后的入口文件(比如
dist/index.js) - 可选优化:开发阶段用
tsc --watch监听文件变化自动编译,同时在node-windows配置中添加文件变更触发服务重启的逻辑,或搭配nodemon实现热重载
方案二:让node-windows直接调用ts-node启动
- 若全局安装了ts-node,找到其可执行文件路径(通常为
C:\Users\<你的用户名>\AppData\Roaming\npm\ts-node.cmd);若为项目本地安装,路径在项目根目录/node_modules/.bin/ts-node.cmd - 在node-windows服务配置中,将
script指向ts-node的cmd文件,把TS入口文件作为参数传入,示例代码:
const Service = require('node-windows').Service; const svc = new Service({ name: '你的服务名称', description: '服务功能描述', script: 'C:\\Users\\<用户名>\\AppData\\Roaming\\npm\\ts-node.cmd', args: ['C:\\项目路径\\index.ts'] // 替换为你的TS入口文件绝对路径 }); svc.on('install', () => { svc.start(); }); svc.install();
方案三:使用PM2管理并注册为Windows服务
- 全局安装PM2:
npm install pm2 -g - 用PM2启动ts-node应用:
pm2 start index.ts --interpreter ts-node - 安装PM2的Windows服务插件:
npm install pm2-windows-service -g - 将PM2注册为Windows服务:
pm2-windows-service install - 后续可通过PM2命令管理应用,比如
pm2 restart <应用名>查看日志、pm2 logs查看运行日志
内容的提问来源于stack exchange,提问作者Pascal S
相关产品推荐
相关产品推荐

