簡體   English   中英

如果app-是子應用程序,則`app.use(express.static`似乎不起作用

[英]`app.use(express.static` seems to not working if app - is subapplication

我嘗試做這樣的事情:

var main = express();
main.use(express.static(path.resolve('./asset')));
main.route('someroute', someHandle);
var app = express();
app.use(express.static(path.resolve('./asset')));
app.route('someroute', someHandle);
main.use('/app', app);

資產/asset/someasset.js良好,但/app/asset/someasset.js沒有返回(404),路徑解析到正確的文件夾。

我嘗試了app.use('/app', express.static(path.resolve('./asset'))); -不起作用,但是main.use('/app', express.static(path.resolve('./asset'))); -有效!

有一些限制使用express.static與安裝subapp?

UPD:

我嘗試使用http://expressjs.com/ru/4x/api.html#express app.mountPath中所述的掛載應用程序,期望Express掛載為子應用程序的所有功能都可以在其中使用,並且偶然發現了靜態問題。想知道此用例是否有局限性? 他們可能是什么?

您的用例看起來像是Express Router的不錯的選擇,Express Router是“中間件和路由的隔離實例”:

http://expressjs.com/4x/api.html#router

具體來說,請嘗試更換

var app = express();

var app = express.Router();

編輯:您使用path.resolve都是錯誤的。

 path.resolve('./asset') 
在兩種情況下都解析到相同的文件夾。 中間件的安裝點僅影響url,而不影響目錄文件夾。 按照下面的建議重寫您的代碼,所有內容都將如廣告所示那樣工作

我的猜測是express.static仍在原始路徑上運行。 所以試試這個

 var main = express(); main.use(express.static(path.resolve('./asset'))); main.route('someroute', someHandle); var app = express(); app.use(express.static(path.resolve('./app/asset'))); app.route('someroute', someHandle); main.use(app); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM