2016-07-24 6 views
6

Ich habe ein altes Testprojekt ursprünglich mit Express 2.X gebaut. Ich ziehe es nach Express 4.x und versuche, Babel 6.x einzufügen, um mit ES6-Features serverseitig zu experimentieren.Import/Export des Express-Routers mit ES6 Import + Export Schlüsselwörter und Babel

Das Update auf Express 4.x ging in Ordnung. Die ursprüngliche App funktioniert gut. Die Probleme treten auf, wenn ich anfange, ES6-Eigenschaften hinzuzufügen.

Insbesondere möchte ich alle require und module.export Anweisungen mit ES6 import {...} from... und export {...} ersetzen.

Problem: Ich kann anscheinend keine Routen von externen Dateien in die Hauptdatei app.js importieren.

Meine app.js Lasten Routen wie so:

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

Innen index_route.js ich habe:

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

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

export { router } 

Dieser Quellcode für Babel in Ordnung ist, aber Knoten beschwert sich beim Start:

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

Ich habe zwei Dateien wie index_route.js, jeder für ag roup von Routen, und AFAIS sie beide importieren + modifizieren + exportieren das gleiche Router-Objekt. In jedem Fall gibt der Export + Import unter Verwendung von ES6-Schlüsselwörtern undefined zurück.

Was mache ich falsch? Verwende ich die ES6-Schlüsselwörter für die falschen Objekte? Verwende ich veraltete Anweisungen, um die Routen innerhalb von app.js zu konfigurieren?

+1

Die Namen Ihrer Import und Export sind nicht korrekt. Versuchen Sie 'import {router} von './routes/index_route';' – Achrome

Antwort

3

Das Problem ist, dass Sie router als benannten Export router exportieren, aber versuchen, es als indexRoute zu importieren.

sollten Sie entweder Ihren Export umbenennen:

export { router as indexRoute } 

oder Ihre Import ändern:

import { router as indexRoute } from './routes/index_route'; 
3

Try this:

export default router; 
+0

Nicht funktioniert meine Seite –