Answers:
您还可以通过指定其他(第一个)参数来设置将静态文件投放到网络的路径,use()
如下所示:
app.use("/public", express.static(__dirname + "/public"));
app.use("/public2", express.static(__dirname + "/public2"));
这样,您将在网络上获得两个反映本地目录的不同目录,而不是在两个本地目录之间进行故障转移的URL路径。
换句话说,URL模式:
http://your.server.com/public/*
public
在以下情况下,从本地目录提供文件服务:
http://your.server.com/public2/*
提供本地目录中的文件public2
。
顺便说一句,如果您不希望static从服务器的根目录而是从更合格的路径提供文件,这也很有用。
高温超导
"homepage": "/public"
和"homepage": "/public2"
。有关使用两个React应用程序的更多信息,请在这里查看我的答案stackoverflow.com/a/48569896/4746648
shared
文件夹以便可以使用"./"
并快速"./shared"
共享js文件时:3谢谢
您还可以将目录“合并”到单个可见目录中
目录结构
/static
/alternate_static
码
app.use("/static", express.static(__dirname + "/static"));
app.use("/static", express.static(__dirname + "/alternate_static"));
static和alternate_static都将像在同一目录中一样被提供。但是,请注意文件名修饰符。
main.js
在static/
它不会继续寻找中alternate_static/
。
alternate_static
送达,那仍然很麻烦。
一次中间件注入是不可能的,但是您可以static
多次注入中间件:
app.configure('development', function(){
app.use(express.static(__dirname + '/public1'));
app.use(express.static(__dirname + '/public2'));
});
说明
查看connect / lib / middleware / static.js#143:
path = normalize(join(root, path));
有一个options.root
静态根,您可以在其中定义express.static
或connect.static
调用它,它path
是请求路径。
进一步查看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);
路径仅检查一次,如果找不到文件,则请求将传递到下一个中间件。
Connect 2.x的更新
对于Connect 2.x,代码链接实际上是不正确的,但是仍然可以像以前一样使用多种静态中间件。
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