在我的代码中,每个打印某些内容的地方都会通过此功能:
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.log
,process.stdout.write
或其他写函数,并且代码中的任何位置都没有使用字符\n
。
undefined如何出现?有什么可能的原因?无论我做什么,它都会让我觉得它出现在日志的同一个地方。
答案 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);
}