使用ES6导入+导出关键字和Babel导入/导出Express路由器

我有一个旧的testing项目,最初用Express 2.X构build。 我将它移动到Express 4.x并尝试插入Babel 6.x以使用服务器端的ES6function进行实验。

Express 4.x的更新正常。 原来的应用程序工作正常。 当我开始添加ES6function时出现问题。

特别是,我想用ES6 import {...} from...replace所有requiremodule.export指令,并且export {...}

问题:我似乎无法将外部文件的路由导入到主要的app.js文件中。

我的app.js像这样加载路由:

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

index_route.js里面我有:

 "use strict"; import express from 'express'; var router = express.Router(); router.get('/', function(req, res, next) { res.render('index_view', { title: 'Express' }); }); export { router } 

这个源代码对于Babel是可以的,但是在启动时节点抱怨:

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

我有两个文件像index_route.js ,每一个为一组路由,和AFAIS他们都导入+修改+导出相同的路由器对象。 在任何情况下,使用ES6关键字完成的导出+导入都将返回undefined

我究竟做错了什么? 我在错误的对象上使用ES6关键字? 我是否使用过时的指令来configurationapp.js的路由?

问题是你正在导出router作为命名导出router ,但试图导入它作为indexRoute

你应该重新命名你的出口:

 export { router as indexRoute } 

或更改您的导入:

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

尝试这个:

 export default router;