微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Nodejs - 将指挥官参数传递给永久监控子进程

如何解决Nodejs - 将指挥官参数传递给永久监控子进程

我有这个节点 cli 脚本

#!/usr/bin/env node
const path = require('path');
const forever = require('forever-monitor');
const script = path.format({dir: __dirname,base: 'pager.js'});
const chalk = require('chalk');
const commander = require('commander');

commander.version('1.0.0')
.option('-m,--message','set awesome message')
.parse();

const args = commander.opts();

const header = `
+---------------------+  
| Awesome v1.0 |
+---------------------+
`;

const child = new (forever.Monitor)(script,{
    max: 2,silent: false,args: args
});

child.start();

child.on('start',(process) => {
    console.log(chalk.magenta.bold(header));
});

child.on('restart',() => {
    console.log(`Forever restarting script for ${child.times} time`);
});

child.on('exit:code',(code) => {
    console.log(`Forever detected script exited with code ${code}`);
});

我想集成 commander 以让用户能够传递参数,这些参数将被解析,然后传递给正在运行的子进程,直到终端在 forever-monitor npm 包的帮助下关闭。目前我已经尝试在子进程中使用指挥官但没有成功,它将被忽略。然后我将它移到我的 index.js 代码中,但我不知道如何将参数传递给子进程。目前,如果我将解析的参数传递给永远监视器的 args 选项

,我会收到此错误
host:awesome dev$ node . -m 'Hello!'
/Users/dev/Desktop/awesome/node_modules/forever-monitor/lib/forever-monitor/monitor.js:130
    this.args.unshift(script);
              ^

TypeError: this.args.unshift is not a function
    at new exports.Monitor (/Users/dev/Desktop/awesome/node_modules/forever-monitor/lib/forever-monitor/monitor.js:130:15)
    at Object.<anonymous> (/Users/dev/Desktop/awesome/index.js:20:15)
    at Module._compile (node:internal/modules/cjs/loader:1108:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1137:10)
    at Module.load (node:internal/modules/cjs/loader:973:32)
    at Function.Module._load (node:internal/modules/cjs/loader:813:14)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:76:12)
    at node:internal/main/run_main_module:17:47

谁能给我一些帮助?

解决方法

forever-monitor:传递给 argsforever-monitor 配置选项需要一个数组。

'args':    ['foo','bar']

Commander: program.opts() 返回一个常规的 javascript 对象,它是一个哈希,键是选项名称。 program.args 是已解析的命令参数数组,其中删除了已识别的选项和选项值。

在 Commander 中,还可以查看 .allowUnknownOption()passThroughOptions(),以便 Commander 在命令行上允许无法识别的选项。默认行为是为无法识别的选项显示错误。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。