Node.js: Попытка записать номер строки с неожиданным результатом синтаксиса
Узнав по некоторому URL-адресу, который я не могу легко найти и сослаться через мгновение, я использовал приведенный ниже код для печати отладочной информации:
function log_1(arg) {
const orig = Error.prepareStackTrace;
Error.prepareStackTrace = (_, stack) => stack;
const err = new Error();
Error.captureStackTrace(err, arguments.callee);
Error.prepareStackTrace = orig;
const callee = err.stack[0];
process.stdout.write(`${require('path').relative(process.cwd(), callee.getFileName())}:${callee.getLineNumber()}: ${arg}\n`);
}
И это работало нормально. Теперь мне надоело объединять и преобразовывать несколько аргументов перед регистрацией, поэтому я пытаюсь сделать так, чтобы они поддерживали несколько аргументов, используя "расширенный синтаксис" javascript /...
, Ниже - мой код:
function log_2(...args) {
let string = '';
let delim = ': ';
args.map(arg => {
switch (typeof arg) {
case 'string':
case 'boolean':
case 'number':
string += delim + arg;
break;
case 'undefined':
string += delim + 'undefined';
break;
case 'function':
string += delim + arg.toString;
break;
case 'object':
string += delim + JSON.stringify(arg, getCircularReplacer());
break;
default:
string += delim + arg;
};
});
const orig = Error.prepareStackTrace;
Error.prepareStackTrace = (_, stack) => stack;
const err = new Error();
Error.captureStackTrace(err, arguments.callee);
Error.prepareStackTrace = orig;
const callee = err.stack[0];
process.stdout.write(`${require('path').relative(process.cwd(), callee.getFileName())}:${callee.getLineNumber()}: ${string}\n`);
}
Но это идет не так и печатает одну строку, хотя я звонил из многих мест в других моих кодах.
$ bin/www
Object.exports.log_2 (/usr/home/zipper/node/n4/server/util/util.js:199:41),genCfg (/usr/home/zipper/node/n4/server/admin/init.js:338:12),/usr/home/zipper/node/n4/server/admin/init.js:39:27,<anonymous>,process._tickCallback (internal/process/next_tick.js:169:7)
Я предполагаю, что где-то допустил грубую ошибку, но просто не могу понять это через некоторое время.
$ node -v
v8.1.4
$ uname -a
FreeBSD fbsd.net 11.0-RELEASE-p9 FreeBSD 11.0-RELEASE-p9 #0: Tue Apr 11 08:48:40 UTC 2017 root@amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC amd64