Mar*_*lli 13 node.js express babeljs
我有一个最初使用Express 2.X构建的旧测试项目.我正在将它移动到Express 4.x并尝试插入Babel 6.x来试验服务器端的ES6功能.
Express 4.x的更新没问题.原始应用程序工作正常.当我开始添加ES6功能时会出现问题.
我特别想替换所有require和module.export说明书用ES6 import {...} from...和export {...}.
问题:我似乎无法将外部文件中的路由导入主app.js文件.
我的app.js加载路线如下:
import { indexRoute } from './routes/index_route';
app.use('/', indexRoute);
Run Code Online (Sandbox Code Playgroud)
里面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 }
Run Code Online (Sandbox Code Playgroud)
这个源代码适用于Babel,但节点在启动时会抱怨:
Router.use() requires middleware function but got a undefined
Run Code Online (Sandbox Code Playgroud)
我有两个文件index_route.js,每个文件用于一组路由,而AFAIS它们都导入+修改+导出相同的路由器对象.在任何情况下,使用ES6关键字完成的导出+导入都会返回undefined.
我究竟做错了什么?我在错误的对象上使用ES6关键字吗?我是否使用过时的指令来配置里面的路线app.js?
问题是您要导出router为命名导出router,但尝试将其导入为indexRoute.
您应该重命名导出:
export { router as indexRoute }
Run Code Online (Sandbox Code Playgroud)
或更改您的导入:
import { router as indexRoute } from './routes/index_route';
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12377 次 |
| 最近记录: |