Executando o aplicativo Node.js no OpenShift com um nome de arquivo diferente de server.js

Passei cerca de uma hora hoje à noite coçando minha cabeça para descobrir o que fiz de errado ao configurar meu novo aplicativo Node.js no OpenShift. O problema que eu estava enfrentando era com o nome do arquivo do aplicativo / servidor principal. Por padrão, eles fornecem um aplicativo de amostra que reside em, server.jsembora eu goste que meu arquivo de aplicativo principal seja nomeado app.js. Não é grande coisa na maioria dos casos, exceto no OpenShift.

Seus ganchos de ação que constroem e implantam seu aplicativo depois de git pushserem configurados para executar um comando semelhante ao node server.jsque precisaria ser alterado usando um gancho de ação customizado para seu aplicativo para substituí-lo e usar um nome de arquivo diferente. A maioria das pesquisas no Google mostra que o mainparâmetro em seu package.jsonprecisaria ser alterado para o nome de arquivo correto, embora depois de testar várias vezes, eu não tenha conseguido fazê-lo funcionar. Basicamente, eu implantaria o aplicativo e depois de esperar cerca de 5 minutos, meu site ainda estaria em uma tela de erro 503 “Aplicativo indisponível”. Verificando por SSH, o nó nem está em execução!

Há uma joia oculta no OpenShift que ajuda a resolver esse problema na implantação. Em seu pacakge.jsonarquivo, você pode adicionar um snippet para definir o comando a ser executado na implantação. Depois de adicionar isso, implantar o aplicativo, eu tinha um site funcionando!

"scripts": {
"start": "node app.js --websocket-port=$OPENSHIFT_NODEJS_PORT --log-level=1"
}

Você pode mudar app.jspara o arquivo principal do aplicativo se decidir dar outro nome.

Passei um bom tempo tentando remediar essa solução, então espero que ajude alguns outros que enfrentam o mesmo problema no OpenShift e não querem seguir sua metodologia. Se alguém descobriu uma maneira ainda melhor de fazer isso, poste 🙂