[英]Windows Service to execute `npm start` on my NodeJS project directory
[英]Start nestjs project as a Windows service
我們曾經使用 Docker 容器啟動 Angular 和 NestJS(基於 node.js)項目。 由於各種原因,該解決方案已停止使用,因此我們正在尋找一種方法來在 PC 啟動時(或在觸發器上)啟動這些項目,並在發生崩潰時自動重新啟動項目。
這個 package 從 node.js 項目構建了一個 Windows 服務。 NestJS 基於 node.js,使用 node.js 啟動它是這樣完成的(在項目文件夾中):
node PATH_TO_PROJECT\node_modules\@nestjs\cli\bin\nest.js start --config.\tsconfig.build.json
使用的腳本:
const svc = new Service({
name: 'Test',
description: 'Test',
script:
'PATH_TO_PROJECT\\node_modules\\@nestjs\\cli\\bin\\nest.js',
scriptOptions: [
'start --watch --config PATH_TO_PROJECT\\tsconfig.build.json',
],
],
execPath: 'C:\\Program Files\\nodejs\\node.exe',
});
svc.on('install', function () {
console.log('installed');
svc.start();
});
svc.install();
安裝按預期工作,但在瀏覽器中無法訪問服務器。
start
命令是否可以使用絕對路徑? (例如 nest start --config ABSOLUTE_PATH)謝謝你。
我使用'child_process'庫來運行這樣的命令
服務器.js
const { exec } = require("child_process");
exec("npm run start", (error, stdout, stderr) => {
if (error) {
console.log(`error: ${error.message}`);
return;
}
if (stderr) {
console.log(`stderr: ${stderr}`);
return;
}
console.log(`stdout: ${stdout}`);
});
並像這樣使用節點窗口
var Service = require('node-windows').Service;
var serviceDetail = require('./servicename')();
console.log(serviceDetail);
// Create a new service object
var svc = new Service({
name: serviceDetail.name,
description: serviceDetail.detail,
script: './server.js'
});
console.log('start building up service name ' + serviceDetail.name);
// Listen for the "install" event, which indicates the
// process is available as a service.
svc.on('install',function(){
svc.start();
});
svc.install();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.