Estou testando um aplicativo (espero executar no heroku, mas também estou tendo problemas localmente). Ele está me dando um erro EACCES quando executa http.Server.listen () - mas ocorre apenas em algumas portas.
Então, localmente, estou executando:
joe@joebuntu:~$ node
> var h = require('http').createServer();
> h.listen(900);
Error: EACCES, Permission denied
at Server._doListen (net.js:1062:5)
at net.js:1033:14
at Object.lookup (dns.js:132:45)
at Server.listen (net.js:1027:20)
at [object Context]:1:3
at Interface.<anonymous> (repl.js:150:22)
at Interface.emit (events.js:42:17)
at Interface._onLine (readline.js:132:10)
at Interface._line (readline.js:387:8)
at Interface._ttyWrite (readline.js:564:14)
Não tenho nada em execução na porta 900 (ou em nenhuma das outras 20 portas que tentei), portanto, isso deve funcionar. A parte estranha é que ele faz o trabalho em alguns portos. Por exemplo, a porta 3000 funciona perfeitamente.
O que causaria isso?
Atualização 1:
Eu descobri que no meu computador local, o erro EACCES está chegando, porque eu tenho que executar o nó como root para ligar a determinadas portas. Não sei por que isso acontece, mas o uso do sudo o corrige. No entanto, isso não explica como eu o consertaria no Heroku. Não há como rodar como root no Heroku, então como posso ouvir na porta 80?
fonte
Respostas:
Executando em sua estação de trabalho
Como regra geral, processos em execução sem privilégios de root não podem se vincular a portas abaixo de 1024.
Portanto, tente uma porta mais alta ou execute com privilégios elevados via
sudo
. Você pode fazer o downgrade de privilégios depois de ter vinculado à porta baixa usandoprocess.setgid
eprocess.setuid
.Correndo no heroku
Ao executar seus aplicativos no heroku, você deve usar a porta conforme especificado na variável de ambiente PORT.
Consulte http://devcenter.heroku.com/articles/node-js
fonte
crossdomain.xml
via porta 843.Usuário não privilegiado (não root) não pode abrir um soquete de escuta em portas abaixo de 1024.
fonte
sudo
que executar um servidor expresso usando o nó (gulp, na verdade). Então não faz sentido #Verifique este link de referência :
fonte
pm2 kill
e recrie-o.Outra abordagem é fazer o redirecionamento de porta:
E execute seu servidor na porta> 1024:
ps o mesmo pode ser feito para a porta https (443) a propósito.
fonte
Isso significa que o nó não pode escutar na porta definida. Altere para algo como 1234 ou 2000 ou 3000 e reinicie o servidor.
fonte
AMD!! No meu caso, eu estava fazendo em
....listen(ip, port)
vez de...listen(port, ip)
e isso estava gerando a mensagem de erro:Error: listen EACCES localhost
Eu estava usando números de porta> = 3000 e até tentei com acesso de administrador. Nada deu certo. Então, com um relook mais próximo, notei o problema. Mudou para
...listen(port, ip)
e tudo começou a funcionar bem!Apenas chamando isso, caso seja útil para outra pessoa ...
fonte
....listen(ip, port)
em sua resposta (com quatro.
)? Levei um minuto para perceber que você estava falando sobre a ordem dos argumentos por causa disso.....
(quatro pontos) lá, o que eu pensei que era óbvio.Eu recebi esse erro no meu mac porque ele executava o servidor apache por padrão usando a mesma porta usada pelo servidor do nó, que no meu caso era a porta 80. Tudo o que eu precisava fazer era parar com ele.
sudo apachectl stop
Espero que isso ajude alguém.
fonte
Eu também tenho esse erro no meu mac. Eu uso
npm run dev
para executar meu aplicativo Nodejs no Windows e funciona bem. Mas eu recebi esse erro no meu mac -error given was: Error: bind EACCES null:80
.Uma maneira de resolver isso é executá-lo com acesso root. Você pode usar
sudo npm run dev
e precisará inserir sua senha.Geralmente, é preferível atender seu aplicativo em uma porta não privilegiada, como 3000, que funcionará sem permissões de root.
reference: Erro EACCES do Node.js ao atender na porta http 80 (permissão negada)
fonte
Eu tive um problema semelhante ao negar a execução na porta 8080, mas também em qualquer outra.
Acontece que foi porque o
env.local
arquivo lido continha comentários após os nomes das variáveis, como:E interpretou assim, tentando usar port "
8080 # The port the server runs at
", que obviamente é uma porta inválida (-1). A remoção dos comentários resolveu completamente.Usando o Windows 10 e o Git Bash, a propósito.
Eu sei que não é exatamente o problema descrito aqui, mas pode ajudar alguém por aí. Cheguei a essa pergunta procurando o problema da minha resposta, então ... talvez?
fonte
Lembre-se, se você usar sudo para ligar à porta 80 e estiver usando as variáveis env PORT & NODE_ENV, deverá reexportar esses vars, pois agora está no perfil raiz e não no seu perfil de usuário. Portanto, para que isso funcione no meu Mac, fiz o seguinte:
fonte
isso acontece se a porta na qual você está tentando hospedar localmente for portfowarded
fonte
Tente authbind:
http://manpages.ubuntu.com/manpages/hardy/man1/authbind.1.html
Após a instalação, você pode adicionar um arquivo com o nome do número da porta que deseja usar na seguinte pasta: / etc / authbind / byport /
Dê 500 permissões usando chmod e altere a propriedade para o usuário no qual você deseja executar o programa.
Depois disso, faça "authbind node ..." como esse usuário em seu projeto.
fonte
Meu erro foi resolvido apenas alterando o número da porta no server.js Especialmente nesta linha
Alterei meu número da porta para 8085 de 8080.
Espero que ajude.
fonte
Depois de tentar várias maneiras diferentes, a reinstalação do IIS no meu windows resolveu o problema.
fonte
Meu erro foi resolvido usando (No Windows)
Permita que o aplicativo NodeJS acesse a rede no Firewall do Windows.
fonte
reiniciar não foi suficiente! A única maneira de resolver o problema é o seguinte:
Você tem que matar o serviço que é executado nessa porta.
no cmd, execute como admin e digite: netstat -aon | encontrar / i "ouvindo"
você receberá uma lista com o serviço ativo, procurará a porta que está sendo executada em 4200 e usará a identificação do processo, que é a última coluna para eliminá-la.
: taskkill / F / PID 2652
fonte