J'ai le scénario suivant:
réservations.js strong> p > const express = require('express');
const bodyParser = require('body-parser');
const app = express();
const apiRoot = '/api/v1/bookings';
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.use(function (req, res, next) {
res.setHeader('Access-Control-Allow-Origin', 'http://localhost:4200');
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');
res.setHeader('Access-Control-Allow-Credentials', false);
next();
});
app.get(apiRoot, async function(req, res) {
[... do stuff ...]
});
app.get(apiRoot + '/:id', async function(req, res){
[... do stuff ...]
});
app.listen(process.env.PORT);
3 Réponses :
Chaque ensemble d'itinéraires pourrait simplement être dans un fichier qui exporte une fonction qui prend puis dans votre principale p> app code> par exemple
La solution n'a pas fonctionné dans mon environnement, car j'utilise Nodejs sur un serveur IIS. Mais vous me mettez dans la bonne direction, merci!
La conception la plus courante et vraiment comment Express a été conçu, c'est que chacun de vos fichiers devrait créer un routeur et exporter le routeur. Ensuite, vous auriez un fichier principal qui crée l'objet code> code>, importe chacun de vos modules et crochets dans leur routeur. Dans ce cas, vous pouvez également exporter la racine dont ils veulent être installés.
const express = require('express'); const app = express(); // load and hook in the other routers const m1 = require('./m1"); app.use(m1.apiRoot, m1.router); const m2 = require('./m2"); app.use(m2.apiRoot, m2.router); app.listen(process.env.PORT);
La solution n'a pas fonctionné dans mon environnement, car j'utilise Nodejs sur un serveur IIS. Mais vous me mettez dans la bonne direction, merci!
@ Danilokörber - Je suis curieux de savoir ce que Nodejs sur IIS a quelque chose à voir avec cette question ou réponse?
La façon dont mon IIS est configurée, les itinéraires ne fonctionnent pas à moins que le fichier du nom JS soit identique au dernier élément du chemin. Peut-être que ce n'est pas le meilleur moyen, mais je ne peux pas changer cela.
@ Danilokörber - Wow, c'est vraiment, vraiment limitant. Très étrange.
Les deux réponses n'ont pas fonctionné dans mon environnement, car j'utilise Nodejs sur un serveur IIS. Voici la solution que j'ai utilisée:
Merci pour les réponses fournies. Ils me mettent dans la bonne direction. P> p>
FYI, vous pouvez simplement exporter directement l'objet code> comme
module.exports = app code>, puis simplement l'utiliser directement lors de l'importation. Il n'y a pas besoin de la fonction que vous avez exportée.
Cela vous aidera Stackoverflow.com/Questtions/ 5778245 / ...