Node.js打印" undefined"在一个不可能的地方

时间:2015-03-17 16:16:49

标签: javascript node.js

在我的代码中,每个打印某些内容的地方都会通过此功能:

log = function log (LOG, message) {
    if (!message) {
        message = LOG;
        LOG = '\t';
    }
    console.log('@' + NAME + '\t-\t' + resize(LOG, 12) + '\t:\t' + message);
}

(此功能的原因不是问题,而是用于格式化)。

所以每个新行都以@开头,无论在此之后应该打印什么数据。

但是在我的日志中,我有这个:

@App            -       play            :       [ 'FC4.mp4',
  'ME.mp4',
  'ME2.mp4',
  'MER.mp4',
  'PvS.mp4',
  'BF3.mp4',
  'BF4.mp4',
  'BFH.mp4',
  'BFH2.mp4',
  [length]: 9 ]
undefined
@App            -       play            :               at 2015-03-17_16-56

逐行评论只会让undefined更早出现:

@App            -       update          :               Done
undefined
@App            -       play            :               at 2015-03-17_17-08

代码中的任何位置都没有使用console.logprocess.stdout.write或其他写函数,并且代码中的任何位置都没有使用字符\n

undefined如何出现?有什么可能的原因?无论我做什么,它都会让我觉得它出现在日志的同一个地方。

2 个答案:

答案 0 :(得分:1)

我已经平静下来以防止发布一个愚蠢的问题,但该行来自omxdirector,一个我在使用前没有完全检查的npm模块。

谢谢你。

(该行在omxdirector / main.js中:

var sendAction = function (action) {
    if (commands[action] && omxProcess) {
      try {
        omxProcess.stdin.write(commands[action], function (err) {
          console.log(err);
        });
      } catch (err) {
        console.log(err);
      }
    }
  };

修改后,一切都恢复正常了)

答案 1 :(得分:1)

在我看来,NAME可能未定义一次通话。你可以通过这样做来测试它:

if(NAME) {
            console.log('@' + NAME + '\t-\t' + resize(LOG, 12) + '\t:\t' + message);
        }