/ / Zobraziť pripojené funkcie Middleware v konzole - javascript, node.js, express, konzola, connect

Zobraziť funkcie pripojeného middleware v konzole - javascript, node.js, express, konzola, connect

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ď č. 1

Najužš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.