Musím priznať, že som skôr prekvapený, že som na Google nenašiel žiadne informácie. Možno som to nevyzeral dostatočne tvrdo.
V podstate chcem nájsť informácie o rôznych funkciách middleware, ktoré aplikácia Express.js používa, najlepšie cez a bash
-like konzoly. Prihlásenie express()
samotná funkcia nezaznamenáva subfunkcie, ako napr trace()
alebo mkcol()
, Tieto sú zobrazené ako atribúty express
ako je napr. trace: [Function]
, alebo emit: [Function: emit]
; ich telá a aktuálny obsah nie sú zobrazené. Som schopný prihlásiť funkčné telieska napr. express().once.toString()
, ako bolo uvedené v niekoľkých odpovediach, vrátane toto.
Toto zobrazuje len funkčné teleso ako to bolo predtým, než som ho zavolal (keď som pridal všetky middleware), nie to, čo je telo teraz. Neukazuje middleware, ktorý som mal Express use()
.
Ako môžem zobraziť tieto funkcie middleware v konzole tak, ako sú teraz? Napríklad, ak definujem:
express = require("express");
server = express();
flash = require("connect-flash");
bodyParser = require("body-parser");
server.use(flash());
server.use(bodyParser.json());
server.use(bodyParser.urlencoded());
ako vidím, že program Express teraz používa flash
middleware a oddelene, ako vidím, že Express teraz používa middleware, ktorý sa skladá z akejkoľvek funkcie, ktorú exportuje connect-flash
modul? Ak by jedna alebo obidva z nich nefungovali pre "čokoľvek je funkcia bodyParser.json () / bodyParser.urlencoded ()", existuje iný spôsob, ako to urobiť? Ako som povedal, nestačí jednoducho console.log
Expresné "ov use()
funkciu, alebo, ak áno, nebol som schopný nájsť trik. Existuje milión spôsobov, ako môže byť definovaná funkcia middleware & use()
d, takže neočakávam žiadnu odpoveď na prácu pre všetkých, ale "čo najviac" by bolo pekné.
Akákoľvek odpoveď by mala fungovať aj pre vnorený middleware, ako napríklad Router
a vhost
middleware môžu a zvyčajne robia use()
iný middleware a sú v skutočnosti Express aplikácie sami.
odpovede:
1 pre odpoveď č. 1Najužšia vec, o ktorej viem, je spustenie vašej aplikácie DEBUG
premenná prostredia nastavená na express:router
ako toto: DEBUG=express:router node server.js
a sledovať výstup pri používaní aplikácie. Mnoho funkcií, ktoré používate ako middleware, bude anonymné, pretože je bežné ich definovať takto: app.get("/foo", function(req, res) {...});
tak vyjadriť nemá ani prístup k niečomu tak zásadnému ako ľudské čitateľné meno pre túto funkciu obsluhy trasy.