节点.js在不可能的地方打印“未定义”

Node.js print "undefined" in a impossible place

本文关键字:未定义 打印 方打印 js 不可能 节点      更新时间:2023-09-26

在我的代码中,每个打印内容的地方,它都通过这个函数:

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);
        }