Заранее спасибо за чтение.
Итак, я работаю над динамическим c загрузочным приложением, используя pm2 и express для обработки вызовов API, однако я столкнулся с проблемой, когда у меня нет ни малейшего понятия, как ее решить.
Вот проблема, когда вызывается API, он находит и получает правильные pm_id и имя действия. Теоретически, это должно было позволить мне отправить сообщение в этот личный кабинет с данными express, чтобы предпринять действия в этом процессе. Однако у меня возникают проблемы с этим.
route.ts
/**
* Check which Application is active
* @private
*/
export default async function checkApplication(requestType:any, req:any, res: Response, core:any){
const message = {
core: core,
log: (data: string | undefined, level: number | undefined) => {try {core.log(data,level,"restapi")} catch { console.log(data)}},
res: res,
full: req,
type: requestType,
errors: require('./errors'),
headers: req.headers,
query: req.query,
app: (req.query.app || req.headers.app),
action: (req.query.action || req.headers.action),
applications: new Map()
}
await core.pm.list(function (err: any, list: any[]) {
list.forEach(async (item: any) => {
if (item.name.slice(11).split(" ~ ")[1] || item.name.slice(11) === "Server") {
const name = (item.name.slice(11).split(" ~ ")[1] || item.name.slice(11))
message.applications.set(name, item.pm_id)
}
})
if (message.app !== undefined) {
if (message.applications.has(message.app.toLowerCase())) {
core.pm.sendDataToProcessId(message.applications.get(message.app.toLowerCase()), { type: 'process:msg', data: {message: message}, topic: "api" },(err: any)=>{if(err)console.log(err)})
message.res.status(200).send("That sorta worked");
} else {
message.errors.appFailed(message);
}
} else {
message.errors.appUndefined(message);
}
})
}
smartcloud.ts
process.on('message', function (emit) {
switch(emit.topic) {
case "api":
console.log(emit.data)
emit.data.message.res.status(200).send("That sorta worked");
break;
}
})
Текущая ошибка:
TypeError: Converting circular structure to JSON
at JSON.stringify (<anonymous>)
at pack (.trunk\package\core\node_modules\amp-message\index.js:126:33)
at encode (.trunk\package\core\node_modules\amp-message\index.js:101:14)
at Message.toBuffer (.trunk\package\core\node_modules\amp-message\index.js:68:10)
at ReqSocket.Socket.pack (.trunk\package\core\node_modules\pm2-axon\lib\sockets\sock.js:92:14)
at ReqSocket.send (.trunk\package\core\node_modules\pm2-axon\lib\sockets\req.js:96:21)
at Client.call (.trunk\package\core\node_modules\pm2-axon-rpc\lib\client.js:34:13)
at module.exports.executeRemote (.trunk\package\core\node_modules\pm2\lib\Client.js:541:22)
at API.CLI.sendDataToProcessId (.trunk\package\core\node_modules\pm2\lib\API\Extra.js:392:17)
at .trunk\package\server\lib\routes\v1\src\routes\v1\route.ts:28:17
at .trunk\package\core\node_modules\pm2\lib\API.js:643:19
at .trunk\package\core\node_modules\pm2-axon-rpc\lib\client.js:45:10
at Parser.<anonymous> (.trunk\package\core\node_modules\pm2-axon\lib\sockets\req.js:67:8)
at Parser.emit (events.js:182:13)
at Parser.EventEmitter.emit (domain.js:442:20)
at Parser._write (.trunk\package\core\node_modules\amp\lib\stream.js:91:16)
at doWrite (_stream_writable.js:410:12)
at writeOrBuffer (_stream_writable.js:394:5)
at Parser.Writable.write (_stream_writable.js:294:11)
at Socket.ondata (_stream_readable.js:666:20)
at Socket.emit (events.js:182:13)
at Socket.EventEmitter.emit (domain.js:442:20)