Respostas:
Você também pode definir o caminho de onde os arquivos estáticos serão veiculados na web, especificando um parâmetro adicional (primeiro) para use()
assim:
app.use("/public", express.static(__dirname + "/public"));
app.use("/public2", express.static(__dirname + "/public2"));
Dessa forma, você obtém dois diretórios diferentes na web que espelham seus diretórios locais, e não um caminho de url que executa failover entre dois diretórios locais.
Em outras palavras, o padrão de URL:
http://your.server.com/public/*
Exibe arquivos do diretório local public
enquanto:
http://your.server.com/public2/*
Atende arquivos do diretório local public2
.
BTW, isso também é útil se você não quiser que o static sirva os arquivos da raiz do seu servidor, mas sim de um caminho mais qualificado.
HTH
"homepage": "/public"
e "homepage": "/public2"
ao respectivo package.json do aplicativo react. Para obter mais informações sobre o uso de dois apps react, veja minha resposta aqui stackoverflow.com/a/48569896/4746648
shared
pasta para que você pode usar "./"
e "./shared"
e crescer você pode facilmente compartilhar arquivos js: 3 Obrigado
Você também pode "mesclar" diretórios em um único diretório visível
Estrutura de Diretório
/static
/alternate_static
Código
app.use("/static", express.static(__dirname + "/static"));
app.use("/static", express.static(__dirname + "/alternate_static"));
Ambos static e alternate_static serão exibidos como se estivessem no mesmo diretório. No entanto, esteja atento para informações sobre nomes de arquivos.
main.js
em static/
que não vai continuar a olhar em alternate_static/
.
alternate_static
algum dia fosse entregue.
Não é possível por uma injeção de middleware, mas você pode injetar static
middleware várias vezes:
app.configure('development', function(){
app.use(express.static(__dirname + '/public1'));
app.use(express.static(__dirname + '/public2'));
});
Explicação
Olhe para connect / lib / middleware / static.js # 143 :
path = normalize(join(root, path));
Existe options.root
uma raiz estática, que você define em express.static
ou connect.static
chama, e path
é o caminho da solicitação.
Veja mais em connect / lib / middleware / static.js # 154 :
fs.stat(path, function(err, stat){
// ignore ENOENT
if (err) {
if (fn) return fn(err);
return ('ENOENT' == err.code || 'ENAMETOOLONG' == err.code)
? next()
: next(err);
O caminho é verificado apenas uma vez e, se o arquivo não for encontrado, a solicitação é passada para o próximo middleware.
Atualização para Connect 2.x
Os links para o código são inativos para o Connect 2.x, mas o uso de vários middlewares estáticos ainda é possível como antes.
const express = require('express');
const path = require('path');
const pagesPath = path.join(__dirname, '/cheatsheet');
const cssPath = path.join(__dirname, '/stylesheet');
const port = process.env.PORT || 3000;
var app = express();
app.use("/cheatsheet" ,express.static(pagesPath));
app.use("/stylesheet",express.static(cssPath));
app.get('/',(request,response)=>{
response.send('Hello CSS!!!');
});
app.get('/bad',(request,response)=>{
response.send({error: 'Bad Request'});
});
app.listen(port, ()=> {
console.log(`Server is running on Port ${port}` );
console.log(__dirname);
});
// folder structure
/cheatsheet/index.html
/stylesheet/style.css