Existe uma ferramenta pronta para uso do Node.js. (instalada com npm
), que me ajudaria a expor o conteúdo da pasta como servidor de arquivos por HTTP.
Exemplo, se eu tiver
D:\Folder\file.zip
D:\Folder\file2.html
D:\Folder\folder\file-in-folder.jpg
Começando em, D:\Folder\
node node-file-server.js
eu poderia acessar o arquivo via
http://hostname/file.zip
http://hostname/file2.html
http://hostname/folder/file-in-folder.jpg
Por que meu servidor de arquivos estático do nó está descartando solicitações? referenciar alguns místicos
servidor de arquivos estático node.js padrão
Se não houver essa ferramenta, qual estrutura devo usar?
Relacionado: Servidor de arquivos estático básico no NodeJS
node.js
http
fileserver
Paul Verest
fonte
fonte
Respostas:
Uma boa opção "ferramenta pronta para uso" pode ser o servidor http:
Para usá-lo:
Ou assim:
Confira: https://github.com/nodeapps/http-server
fonte
http-server -a localhost
ficou er dun.http-server -a localhost -p 80
--cors
para enviarAccess-Control-Allow-Origin:*
juntamente com os cabeçalhos de resposta (ou seja, ao servir um arquivo JSON)npx http-server
- o npx o transforma em uma linha que baixa os arquivos necessários e os executa.Se você não quiser usar a ferramenta pronta, poderá usar o código abaixo, conforme demonstrado por mim em https://developer.mozilla.org/en-US/docs/Node_server_without_framework :
ATUALIZAR Se você precisar acessar seu servidor a partir de demanda / arquivo externo, precisará superar o CORS, no arquivo node.js, escrevendo o abaixo, como mencionei em uma resposta anterior aqui
ATUALIZAR
Como Adrian mencionou, nos comentários, ele escreveu um código ES6 com explicações completas aqui , apenas re-publiquei seu código abaixo, caso o código saia do site original por qualquer motivo:
fonte
response.writeHead(200
deve serresponse.writeHead(404
;)../../etc/password
. gist.github.com/amejiarosario/53afae82e18db30dadc9bc39035778e5pathname = pathname.replace(/^(\.)+/, '.');
Para pessoas que desejam um servidor executável no script NodeJS:
Você pode usar expressjs / serve-static, que substitui
connect.static
(que não está mais disponível a partir do connect 3):myapp.js:
e depois na linha de comando:
$ npm install finalhandler serve-static
$ node myapp.js
fonte
npm install filehandler
e o pacote está listado nonode_modules
diretório Mas quando eu corromyapp.js
nó lança um erro, dizendoError: cannot find module filehandler
. Se eu comentar sobre a exigência de ststment para carregar o manipulador de arquivos, o aplicativo carrega a estática de servir muito bem, então parece que há algo errado com o pacote filhandler. Hoje é 12 de dezembro de 2014, então talvez o pacote tenha sido alterado desde que esta resposta foi publicada?final
manipulador nãofile
Eu sei que não é Node, mas usei o SimpleHTTPServer do Python:
Funciona bem e vem com o Python.
fonte
python -m http.server [port]
(a mencionada é para python2)php -S localhost:8000
conectar pode ser o que você está procurando.
Instalado facilmente com:
Em seguida, o servidor de arquivos estático mais básico pode ser escrito como:
fonte
connect.static
; ver a minha resposta abaixo de um substitutorequire
módulo capaz separado "serve-estático".Instale o express usando o npm: https://expressjs.com/en/starter/installing.html
Crie um arquivo chamado server.js no mesmo nível do seu index.html com este conteúdo:
Se você deseja colocá-lo em um local diferente, defina o caminho na terceira linha:
CD na pasta que contém seu arquivo e execute o nó no console com este comando:
Navegue até o host local: 8080
fonte
Cannot GET /
. Eu uso o AWS EC2 para executar o servidor.path.join(__dirname, 'public')
é mais multiplataforma.Provas de uma linha ™ em vez de promessas
O primeiro é
http-server
,hs
- linkO segundo é
serve
da ZEIT.co - linkA seguir estão as opções disponíveis, se é isso que ajuda você a decidir.
Se você precisar prestar atenção nas mudanças, veja
hostr
, credite a resposta de Henry Tsengfonte
SOMENTE DEMO / PROTO SERVER
Se é tudo o que você precisa, tente o seguinte:
Nota: Você precisa usar "/index.html" como parte do seu endereço, por exemplo, " http: // localhost: 3000 / index.html "
fonte
index.html
como parte do seu endereço, adicione-oif (req.url === '/') req.url = '/index.html';
logo em seguidares.writeHead(200);
.const stream = fs.createReadStream(...); stream.pipe(res);
é tudo que você precisa #Há outro servidor Web estático que é bastante interessante: sincronização do navegador.
Pode ser baixado usando o gerenciador de pacotes do nó:
Após a instalação, navegue até a pasta do projeto no prompt do cmd e execute o seguinte:
Ele iniciará a restauração de todos os arquivos na pasta atual do navegador.
Mais informações podem ser encontradas no BrowserSync
Obrigado.
fonte
--files
sinalizador são alterados (por exemplo, você não precisa especificar./*
- apenas aqueles que você deseja que o Browsersync observe ativamente para atualizações, por exemplo, .css/*.css
)Não tive muita sorte com nenhuma das respostas nesta página, no entanto, abaixo parecia fazer o truque.
Adicione um
server.js
arquivo com o seguinte conteúdo:Também verifique se você precisa
express
. Executeyarn add express --save
ounpm install express --save
dependendo da sua configuração (recomendoyarn
que seja bem rápido).Você pode mudar
dist
para qualquer pasta em que estiver exibindo seu conteúdo. Para o meu projeto simples, eu não estava servindo de nenhuma pasta, então simplesmente removi odist
nome do arquivo.Então você pode correr
node server.js
. Como tive que carregar meu projeto em um servidor Heroku, precisei adicionar o seguinte ao meupackage.json
arquivo:fonte
Se você usar a estrutura Express , essa funcionalidade estará pronta.
Para configurar um aplicativo de veiculação de arquivo simples, faça o seguinte:
fonte
Aqui está meu projeto pet de servidor estático de arquivo único / node.js, arquivo estático, sem dependência, que acredito ser uma ferramenta rápida e rica, cuja utilização é tão fácil quanto emitir este comando no terminal Linux / Unix / macOS ( ou termux no Android) quando o node.js (ou
nodejs-legacy
no Debian / Ubuntu) estiver instalado:(existem comandos diferentes para usuários do Windows na documentação)
Ele suporta coisas diferentes que acredito que podem ser úteis,
curl pad.js.org | node - -h
[sudo] npm install -g pad.js
e, em seguida, use sua versão instalada para ter acesso às suas opções:pad -h
[sudo] docker run --restart=always -v /files:/files --name pad.js -d -p 9090:9090 quay.io/ebraminio/pad.js
Os recursos descritos acima estão principalmente documentados na página principal da ferramenta http://pad.js.org, que por algum truque interessante que usei também é o local em que a fonte da ferramenta também é servida!
A fonte da ferramenta está no GitHub, que recebe seus comentários, solicitações de recursos e ⭐s!
fonte
A partir do [email protected],
npm
começou a instalar um novo binário ao lado do npm usual chamadonpx
. Então agora, um forros para criar um servidor http estático a partir do diretório atual:ou
fonte
Para um aumento saudável do desempenho usando o nó para servir recursos estáticos, recomendo usar o Buffet . Funciona de maneira semelhante a um acelerador de aplicativos da web, também conhecido como proxy reverso HTTP em cache, mas apenas carrega o diretório escolhido na memória.
Nós o usamos no site codePile e descobrimos um aumento de ~ 700 solicitações / s para> 4k solicitações / s em uma página que baixa 25 recursos sob uma carga de conexão simultânea de 1k do usuário.
Exemplo:
fonte
Dê uma olhada nesse link .
Você precisa apenas instalar o módulo expresso de
node js
.Você pode acessar seu arquivo como http: //hostname/Folder/file.zip
fonte
Abaixo trabalhou para mim:
Crie um arquivo
app.js
com o conteúdo abaixo:Crie um arquivo
index.html
com o conteúdo abaixo:Inicie uma linha de comando:
Execute abaixo em
cmd
:Vá para o URL abaixo, no chrome:
Isso é tudo. Espero que ajude.
Fonte: https://nodejs.org/en/knowledge/HTTP/servers/how-to-serve-static-files/
fonte
Você pode tentar me servir
Usá-lo é tão fácil:
Isso é tudo.
PD: a pasta servida por padrão é "pública".
fonte
Aqui está outro servidor web simples.
https://www.npmjs.com/package/hostr
Instalar
Mudar diretor de trabalho
E começar
fonte
No node.js simples:
Este é um servidor node.j simples que serve apenas os arquivos solicitados em um determinado diretório.
Uso:
folder
pode ser absoluto ou relativo, dependendo daserver.js
localização. O valor padrão é.
qual é o diretório que você executa onode server.js
comando.port
é 8080 por padrão, mas você pode especificar qualquer porta disponível no seu sistema operacional.No seu caso, eu faria:
Você pode procurar os arquivos em
D:\Folder
um navegador digitandohttp://127.0.0.1:8080/somefolder/somefile.html
fonte
Ainda não está no NPM, mas eu construí um servidor estático simples no Express que também permite aceitar envios de formulários e enviá-los por email através de um serviço de email transacional (Sendgrid por enquanto, Mandrill chegando).
https://github.com/jdr0dn3y/nodejs-StatServe
fonte
Para o benefício dos pesquisadores, gostei da resposta de Jakub g, mas queria um pouco de tratamento de erros. Obviamente, é melhor lidar com os erros corretamente , mas isso deve ajudar a impedir que um site seja interrompido se ocorrer um erro. Código abaixo:
fonte
Primeiro instale o servidor estático do nó via
npm install node-static -g
-g é instalá-lo globalmente em seu sistema e, em seguida, navegue até o diretório em que seus arquivos estão localizados, inicie o servidor comstatic
a escuta na porta 8080, navegue até o navegador e digite localhost: 8080 / yourhtmlfilename .fonte
Você pode usar o pacote de veiculação do NPM para isso, se não precisar do material do NodeJS, é uma ferramenta rápida e fácil de usar:
1 - Instale o pacote no seu PC:
2 - Sirva sua pasta estática com
serve <path>
:Ele mostrará qual porta sua pasta estática está sendo servida, basta navegar para o host como:
fonte
npm
é o gerenciador de pacotes nó assim que você está de fato usando o material NodeJSPesquisando no registro NPM https://npmjs.org/search?q=server , encontrei o static-server https://github.com/maelstrom/static-server
Isso pode até listar o conteúdo da pasta.
Infelizmente, não foi possível veicular arquivos :)
fonte
Um Static-Server simples usando o connect
Consulte também Usando o node.js como um servidor da web simples
fonte
Para trabalho em desenvolvimento, você pode usar (express 4) https://github.com/appsmatics/simple-httpserver.git
fonte
fonte
Se você está interessado em um servidor http ultraleve, sem pré-requisitos, consulte: mongoose
fonte
Uso Houston no trabalho e em projetos pessoais, funciona bem para mim.
https://github.com/alejandro/Houston
fonte
Você também perguntou por que as solicitações estão caindo - não tenho certeza qual é o motivo específico do seu caso, mas, em geral, você melhora o conteúdo estático do servidor usando middleware dedicado (nginx, S3, CDN) porque o Node realmente não é otimizado para esse padrão de rede. Veja mais explicações aqui (ponto 13): http://goldbergyoni.com/checklist-best-practice-of-node-js-in-production/
fonte