使用ES6导入+导出关键字和Babel导入/导出Express路由器
我有一个旧的testing项目,最初用Express 2.X构build。 我将它移动到Express 4.x并尝试插入Babel 6.x以使用服务器端的ES6function进行实验。
Express 4.x的更新正常。 原来的应用程序工作正常。 当我开始添加ES6function时出现问题。
特别是,我想用ES6 import {...} from...
replace所有require
和module.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;