Quero servir index.html
e /media
subdiretório como arquivos estáticos. O arquivo de índice deve ser servido em /index.html
e/
URLs.
eu tenho
web_server.use("/media", express.static(__dirname + '/media'));
web_server.use("/", express.static(__dirname));
mas a segunda linha aparentemente serve a totalidade __dirname
, incluindo todos os arquivos nela (não apenasindex.html
e media
), os quais eu não quero.
Eu também tentei
web_server.use("/", express.static(__dirname + '/index.html'));
mas acessar o URL base /
leva a uma solicitação paraweb_server/index.html/index.html
( index.html
componente duplo ), o que obviamente falha.
Alguma ideia?
A propósito, não encontrei absolutamente nenhuma documentação no Express sobre este tópico ( static()
+ seus parâmetros) ... frustrante. Um link de documento também é bem-vindo.
express.static()
é tratado peloserve-static
middleware do pacote. você pode encontrar seus documentos em npmjs.com/package/serve-static ou github.com/expressjs/serve-static .Respostas:
express.static()
espera que o primeiro parâmetro seja um caminho de um diretório, não um nome de arquivo. Eu sugeriria a criação de outro subdiretório para conter o seuindex.html
e usá-lo.Servindo arquivos estáticos na documentação do Express , ou documentação mais detalhada
serve-static
, incluindo o comportamento padrão de veiculaçãoindex.html
:fonte
express.static
espera que esse parâmetro seja o caminho ... #Se você tiver esta configuração
Então isso deve conseguir o que você queria
O truque é deixar essa linha como último recurso
Quanto à documentação, como o Express usa o middleware connect, achei mais fácil olhar diretamente para o código-fonte de conexão.
Por exemplo, esta linha mostra que o index.html é suportado https://github.com/senchalabs/connect/blob/2.3.3/lib/middleware/static.js#L140
fonte
Application.configure()
foi documentado como legado na 3.x e removido na 4.x. Veja a resposta de ChrisCantrell para um exemplo atualizado.__dirname
? Qual é o seu valor?Na versão mais recente do express, o "createServer" está obsoleto. Este exemplo funciona para mim:
fonte
__file__
que você usa comos.path.dirname(os.path.realpath(__file__))
public/teams/logo.png
?res.sendFile
eexpress.static
ambos trabalharão para issoOnde
public
está a pasta na qual o código do lado do cliente estáConforme sugerido por @ATOzTOA e esclarecido por @Vozzie ,
path.join
pega os caminhos para ingressar como argumentos,+
passa um único argumento para o caminho.fonte
path.join
toma os caminhos para ingressar como argumentos,+
passa um único argumento para o caminho.path.join(public + 'index.html')
empath.join(public, 'index.html')
E, enquanto a ele, a mudança__dirname + "/public/"
empath.join(__dirname, 'public')
fonte
fonte
use abaixo dentro do seu app.js
(folderName é a pasta que possui arquivos) - lembre-se de que esses ativos são acessados diretamente pelo caminho do servidor (por exemplo, http: // localhost: 3000 / abc.png (onde abc.png está na pasta folderName)
fonte