Detecção de ambiente: node.js ou navegador

Estou desenvolvendo um aplicativo JS que precisa trabalhar tanto no lado do cliente quanto no lado do servidor (em Javascript em um navegador e em Node.js), e gostaria de poder reutilizar as partes do código que são usado para ambos os lados.

Eu descobri quewindow era uma variável acessível apenas em navegadores eglobal no nó, para que eu possa detectar em qual ambiente o código está sendo executado (assumindo que nenhum script declarawindow variável)

Eles são dois problemas.

Como devo detectar em qual navegador o código está sendo executado? Por exemplo, este código está OK? (Este código é inline, o que significa que é rodeado por algum código global, reutilizado para ambos os ambientes)

if window?
    totalPath= "../examples/#{path}"
else
    totalPath= "../../examples/#{path}"

Como posso usar variáveis ​​globais para os dois ambientes? Agora, estou fazendo o seguinte, mas isso não parece certo.

if window?
    window.DocUtils = {}
    window.docX = []
    window.docXData= []
else
    global.DocUtils= {}
    global.docX = []
    global.docXData = []

questionAnswers(4)

yourAnswerToTheQuestion