javascript - pm2启动创建奇怪的文件

标签 javascript node.js pm2

我创建了一个简单的“机器人”,用于将 rss-feed 解析为一些 trello-cards。

我正在使用 pm2 来启动和维护 bot.js

由于某些奇怪的原因,cliframework 创建了一些奇怪的文件。

只是为了让情况尽可能清楚:

pm2 list

返回

┌──────────┬────┬──────┬───────┬────────┬─────────┬────────┬─────┬───────────┬──────────┐
│ App name │ id │ mode │ pid   │ status │ restart │ uptime │ cpu │ mem       │ watching │
├──────────┼────┼──────┼───────┼────────┼─────────┼────────┼─────┼───────────┼──────────┤
│ bot      │ 0  │ fork │ 25084 │ online │ 0       │ 3m     │ 0%  │ 67.7 MB   │ disabled │
└──────────┴────┴──────┴───────┴────────┴─────────┴────────┴─────┴───────────┴──────────┘

有时如果我使用

ls

命令正在返回

bot.js  node_modules

有时它返回 1+ 个像这样的额外空文件

b0d3e000-bca5-11e6-b57b-fff3b35ba082  b0d3e001-bca5-11e6-b57b-fff3b35ba082  
bot.js  node_modules

文件在几秒钟后被删除,并在几秒钟后以不同的名称创建

这里是主要问题:

这个机器人在我不在的时候运行了 3 周,在重新启动计数器上有一个 3127(为什么这么多...idk)但是每次重新启动都会留下这样一个文件..我不得不删除 3127 个文件.. 只是因为 pm2 正在创建一些奇怪的文件..

是否还列出了任何其他类似问题......或者您是否知道可能的修复或解释?

编辑:我刚刚意识到这些文件不是通过重新启动创建的..因为它们现在在那里没有重新启动计数器 > 0

只是为了确保,代码分解:

var feed = require('feed-read');
var http = require('http');
var async = require('async');
var request = require('request');
var utf8 = require('utf8');
var sprintf = require('sprintf-js').sprintf;

var UNABLE_TO_CONNECT = "Unable to connect.";
var CURFEED = "";
var PUBDATE = new Array();
var FEEDS = new Array();
FEEDS["TEST"] = "http://lorem-rss.herokuapp.com/feed?unit=second&interval=4"; //test

var LISTID = new Array();
LISTID["TEST"] = "TRELLO_COLUMN";

var Trello = require("node-trello");
var t = new Trello("", "");

(function() {

  var timeout = setInterval(function() {
    async.parallel([ function(callback) {
        CURFEED = "TEST";
        feedMe(CURFEED);
        // TODO: where to call callback()?
    } ], function done(err, results) {
        console.log("Done");
        if (err) {
            throw err;
        }
    });
  }, 1000);
})();

function feedMe(feedName){

  if(FEEDS[feedName] == "" || FEEDS[feedName] == undefined){
      return;
  }
  feed(FEEDS[feedName], "ISO-8859-16", function(err, articles) {
      // console.log("------------------------- " + FEEDS[feedName]);
      if (err) {
          // html.push("<p>", UNABLE_TO_CONNECT = "</p>");
          console.log(UNABLE_TO_CONNECT);
      } else {
        var updated = false;
        var newArticle = new Array();
          articles.forEach(function(entry) {
              var merkDate = new Date(entry.published);
              var oldDate = new Date(PUBDATE[feedName]);

              if(PUBDATE[feedName] == "" || PUBDATE[feedName] == undefined){
                PUBDATE[feedName] = merkDate;
              }

              if(oldDate.getTime() < merkDate.getTime()){
                updated = true;
                newArticle.push(entry);
              }
          });

          if(newArticle.length > 0){
            for (var i = newArticle.length - 1; i >= 0; i--) {
              var entry = newArticle[i];

              console.log(sprintf("----------------------------------------------------------"));
              console.log(sprintf("> %1$s %2$s: %3$s", "New-RSS-Entry", "detected", "Checking"));
              console.log(sprintf("---%1$s %2$s: %3$s", "Entry-Name", "", entry.title));
              console.log(sprintf("----%1$s %2$s: %3$s", "Link-Name", "", entry.link));
              console.log(sprintf("--%1$s %2$s: %3$s", "Create-Date", "", entry.published));
              console.log(sprintf("-------%1$s %2$s: %3$s", "Status", "", "Creating-Trello-Card"));

              t.post("/1/lists/"+LISTID[feedName]+"/cards", {name: entry.title, desc: entry.link} , function(err, data){
                 t.put("/1/cards/"+data.id+"/pos", {value: 0}, function(err, data){
                 });
              });

              console.log(sprintf("-------%1$s %2$s: %3$s", "Status", "", "Trello-Card fully created"));
              console.log(sprintf("> %1$s %2$s: %3$s", "New-RSS-Entry", "detected", "Closing"));
            }
          }

          if(updated == true){
            PUBDATE[feedName] = new Date();
          }

      }
  });
}

最佳答案

好的,我调查了这些文件并得到了解决方案。 只是不要再使用 require('feed-read') 了。

这似乎是创建文件对其进行编码并随后进行流式传输。

主要问题如下:

  • Rss 提要语法错误
  • 服务器不可用
  • 服务器返回一个数据库错误或其他东西

如果发生上述情况之一,文件将不会被删除。其中一些是空的。但我发现了一个返回“数据库错误”的 vBulletinRss 提要。

要四舍五入,只需使用一个请求并自己解析它。

关于javascript - pm2启动创建奇怪的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41024274/

相关文章:

javascript - 通过 pm2 从 nodejs 应用程序运行终端命令

node.js - 如何使用 PM2 将执行参数传递给应用程序?

javascript - 在 JavaScript 中使用 CryptoJS 和 AES 加密的 AES 加密的不同输出

javascript - 如果只有该属性可用,如何访问 Javascript 对象属性 - ReactJS

node.js - 使用流将base64写入文件

javascript - express v4 : How do I run route-specific middleware before param middleware?

javascript - 使用 zeromq.js 从 nodejs 应用程序与 python 后端进行通信

node.js - Docker容器和PM2在ec2实例中运行

javascript - 如何在javascript中从本地PC获取目录的内容

javascript - 我的 Rails 表单无法与 has_scope 一起使用