web-dev-qa-db-fra.com

Importation / exportation du routeur Express à l'aide des mots-clés import + export ES6 et Babel

J'ai un ancien projet de test construit à l'origine avec Express 2.X. Je le déplace vers Express 4.x et j'essaie d'insérer Babel 6.x pour expérimenter avec les fonctionnalités ES6 côté serveur.

La mise à jour vers Express 4.x s'est bien passée. L'application d'origine fonctionne bien. Les problèmes surviennent lorsque je commence à ajouter des fonctionnalités ES6.

En particulier, je veux remplacer tous les require et module.export instructions avec ES6 import {...} from... et export {...}.

Problème: il me semble impossible d'importer des itinéraires à partir de fichiers externes dans le fichier app.js fichier.

Ma app.js charge les routes comme ceci:

import { indexRoute } from './routes/index_route';
app.use('/', indexRoute);

À l'intérieur index_route.js J'ai:

"use strict";
import express from 'express';
var router = express.Router();

router.get('/', function(req, res, next) {
  res.render('index_view', { title: 'Express' });
});

export { router }

Ce code source est OK pour Babel, mais le nœud se plaint au démarrage:

Router.use() requires middleware function but got a undefined

J'ai deux fichiers comme index_route.js, chacun pour un groupe de routes, et AFAIS ils importent + modifient + exportent tous deux le même objet routeur. Dans tous les cas, l'exportation + l'importation effectuée à l'aide des mots clés ES6 renvoie undefined.

Qu'est-ce que je fais mal? Suis-je en utilisant les mots clés ES6 sur les mauvais objets? Suis-je en utilisant des instructions obsolètes pour configurer les routes à l'intérieur app.js?

13
Marco Faustinelli

Le problème est que vous exportez router en tant qu'export nommé router, mais que vous essayez de l'importer en tant que indexRoute.

Vous devez soit renommer votre exportation:

export { router as indexRoute }

ou modifiez votre importation:

import { router as indexRoute } from './routes/index_route';
9
Bogdan Savluk

Essaye ça:

export default router;
4
LevCode