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

0 ответов

Другие вопросы по тегам