Questão nº 36
Questão de Tecnologia da Informação · FCC PGE-AM 2022 (nº 36)
Considere o arquivo abaixo, chamado `arq.js`.
```javascript
var http = require('http');
var fs = require('fs');
http.createServer(
function (req, res) {
fs.readFile(
'index.html', function(err, data) {
res.writeHead(200, {'Content-Type': 'text/html'});
res.write(data);
res.end();
}
);
}
).listen(8083);
```
Após salvar o arquivo, no prompt de comandos do Windows 10, considerando o node.js instalado e em condições ideais, um programador digitou `node arq.js`. Uma consideração correta que pode ser feita é que
- Aa execução do arquivo irá falhar porque o método para ler páginas HTML é `readHTML` e não `readFile`. O método `readFile` se aplica a documentos, não a páginas HTML.
- Ba execução do arquivo irá definir que a página de abertura do site em construção deverá se chamar `index.html` quando o site entrar em operação.
- Cse abrir o navegador e digitar `http://localhost:8083/` o arquivo `index.html` será executado e seu conteúdo será mostrado no navegador. (alternativa correta)
- Da execução do arquivo irá falhar porque a porta para executar o web server localmente deve ser a porta 80 e não 8083.
- Eo navegador será aberto automaticamente e o arquivo `index.html` será executado e seu conteúdo será mostrado no navegador.
Resposta comentada
Gabarito Alternativa C
O código cria um servidor web básico usando Node.js, que escuta em uma porta específica e, ao receber uma requisição, lê o conteúdo de um arquivo HTML e o envia como resposta ao navegador.
(A) Incorreta: O método `fs.readFile` é o correto e genérico para ler qualquer tipo de arquivo do sistema de arquivos, incluindo HTML. O `Content-Type` no `res.writeHead` é que informa ao navegador como interpretar o conteúdo, não o método de leitura do arquivo. A armadilha aqui é confundir a função de leitura de arquivo (genérica) com a especificação do tipo de conteúdo para o navegador (HTTP específico).
(B) Incorreta: O código não "define" a página de abertura para um site futuro; ele serve o arquivo `index.html` imediatamente quando uma requisição é feita ao servidor.
(C) Correta: O código inicia um servidor HTTP na porta 8083. Quando um navegador acessa `http://localhost:8083/`, o servidor lê o arquivo `index.html` e o envia como resposta HTML (status 200, Content-Type: text/html), fazendo com que o navegador exiba seu conteúdo.
(D) Incorreta: A porta 80 é a porta padrão para HTTP, mas não é a única. Qualquer porta não privilegiada (geralmente acima de 1024) pode ser usada para um servidor web local, como a 8083, que é comum para desenvolvimento.
(E) Incorreta: O Node.js inicia o servidor, mas não tem a capacidade de abrir automaticamente o navegador do usuário. O usuário precisa abrir o navegador manualmente e digitar o endereço.
Fonte: FCC PGE-AM 2022 Técnico em Gestão Procuratorial - Especialidade Engenharia de Software (Caderno Tipo 001). Reproduzida para fins de estudo.