Когда я перезаписываю console.log, как я могу экспортировать его в другие файлы? - PullRequest
1 голос
/ 31 января 2020

У меня есть main.ts и helper.ts. В помощнике. js Я попытался переопределить console.log и экспортировать его, чтобы я мог использовать код в моем main. js, но когда я запускаю console.log (), он вылетает с ошибкой ниже. Я пытался адаптировать этот SO Ответ . Что мне здесь не хватает?

Я переносил файлы Typescript в JS, используя ts-node main.ts

Ошибка в main.ts:

ReferenceError: window is не определено

Я попытался исправить это, добавив внизу helper.ts: (this as any).window.console = console;, но получил ту же ошибку.

helper.ts

export var console = (function(oldCons) {
  return {
    log: function(text: any) {
      oldCons.log("WHEEE" + text);
      // Your code
    },
    info: function(text: any) {
      oldCons.info(text);
      // Your code
    },
    warn: function(text: any) {
      oldCons.warn(text);
      // Your code
    },
    error: function(text: any) {
      oldCons.error(text);
      // Your code
    }
  };
})(window.console);

main.ts

import {console} from './helper.ts'
console.log("hi stack overflow")

Ответы [ 2 ]

0 голосов
/ 31 января 2020

Если вы хотите получить доступ к глобальному объекту в разных средах, используйте globalThis. Ссылка: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/globalThis

Тем не менее, я бы не рекомендовал заменять доступ к глобальным объектам. Это просто приведет к несчастьям в будущем.

0 голосов
/ 31 января 2020

Я использую что-то подобное в своем приложении, но для регистрации журнала в отдельном файле:

console.log = function(d) {     

try {
        var timestamp = '\n[' + new Date(Date.now()).toLocaleString() + '] '
        log_file.write(util.format(timestamp + d))
        log_stdout.write(util.format(timestamp + d))
    } catch(e) {
        return
    }
}

var log_file    = fs.createWriteStream('log/'+ new Date().getDate() +'-'+ (new Date().getMonth()+1) +'-'+ new Date().getFullYear() +'.log', { encoding: 'utf-8', flags: 'a+' })
...