2016-07-24 149 views
6

我有一个最初使用Express 2.X构建的旧测试项目。我将它移动到Express 4.x并尝试插入Babel 6.x以使用服务器端的ES6功能进行实验。使用ES6导入+导出关键字和Babel导入/导出Express路由器

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

特别是,我想用ES6 import {...} from...export {...}替换所有requiremodule.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 } 

此源代码是通天OK,但节点抱怨在启动时:

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

我有两个文件,比如index_route.js,每一个都是为了ag一组路由和AFAIS,它们都导入+修改+导出相同的路由器对象。无论如何,使用ES6关键字完成的export + import返回undefined

我在做什么错?我是否在错误的对象上使用了ES6关键字?我是否使用过时的说明来配置app.js内的路由?

+1

您的进口和出口的名称不匹配。尝试'从'./routes/index_route'导入{路由器};' – Achrome

回答

3

问题是,您正在导出router名为export router,但试图将其导入为indexRoute

您应该重命名出口:

export { router as indexRoute } 

或更改您的导入:

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

试试这个:

export default router; 
+0

不工作我的身边 –