2016-07-24 143 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

不工作我的身邊 –