我有一个最初使用Express 2.X构建的旧测试项目。我将它移动到Express 4.x并尝试插入Babel 6.x以试验服务器端的ES6功能。
Express 4.x的更新运行正常。原始应用程序工作正常。当我开始添加ES6功能时出现问题。
特别是,我想用ES6 require
和module.export
替换所有import {...} from...
和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关键字吗?我是否使用过时的说明来配置app.js
内的路由?
答案 0 :(得分:6)
问题是您要将-join
导出为名为export router
,但尝试将其导出为router
。
您应该重命名导出:
indexRoute
或更改您的导入:
export { router as indexRoute }
答案 1 :(得分:3)
试试这个:
export default router;