繁体   English   中英

Node.js在不可能的地方打印“ undefined”

[英]Node.js print “undefined” in a impossible place

在我的代码中,每个打印有东西的地方都通过此函数:

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字符。

未定义怎么会这样显示? 可能是什么原因造成的? 不管我做什么,都吓到我看到它出现在日志的同一位置。

我已经冷静下来以免发布一个愚蠢的问题,但是该行来自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);
      }
    }
  };

修改后,一切恢复正常)

在我看来,NAME可能没有为一次通话定义。 您可以通过执行以下操作进行测试:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM