Express Сервер + Диспетчер пакетов = TypeError: Круговая структура - PullRequest
0 голосов
/ 20 января 2020

Заранее спасибо за чтение.

Итак, я работаю над динамическим 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)
...