首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ES6类的快速路由

使用ES6类的快速路由
EN

Stack Overflow用户
提问于 2015-11-16 01:23:45
回答 1查看 9.2K关注 0票数 3

因此,下面的代码在开发中工作,并在生产环境中运行时失败,错误为TypeError: Router.use() requires middleware function but got a Object。到目前为止,我已经尝试了大约一百种不同的方法,结果都是一样的。在开发部门工作,而不是在prod工作。

/server/routes.js

代码语言:javascript
复制
'use strict';

export class AppRoutes
{
    constructor(app)
    {
        this.app = app;

        return function initialize(app)
        {
            app.use('/mail', require('./api/mail'));
        }
    }
}

/server/app.js

代码语言:javascript
复制
var app = express();
import { AppRoutes } from './routes';
let router = new AppRoutes();
router(app);

// start the server here

// Expose app
export default app;

同样,在dev中工作,当ES6被转移,应用程序在生产中运行时,会出现故障。事先谢谢你对这件事的任何想法。

更新

/node_modules/express/lib/router/index.js的第458行上抛出错误。这就是传递给Router.use()的内容

代码语言:javascript
复制
{ default: 
   { [Function: router]
     params: {},
     _params: [],
     caseSensitive: undefined,
     mergeParams: undefined,
     strict: undefined,
     stack: [ [Object], [Object] ] 
    } 
}

下面是我认为与错误相关的依赖项的版本( prod中与dev中相同):

节点v0.12.2

从我的package.json

代码语言:javascript
复制
{
    "express": "^4.13.3",
    "babel-runtime": "^5.8.20",
    "grunt-babel": "^6.0.0"
},
"devDependencies": {
    "babel-core": "^5.8.34",
    "babel-preset-es2015": "^6.1.18",
    "babel-preset-stage-0": "^6.1.18"
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-16 10:31:53

之所以发生这种情况,是因为Babel在6.0中更改了默认导出行为。

现在,如果您想获得默认导出,您应该隐式地这样做:

代码语言:javascript
复制
app.use('/mail', require('./api/mail').default);

您可以在another question中看到有关此更改的动机的答案。

同时,将所有babel-*包保持在相同的主要版本中。6.0预置将不能工作5.8Babel-核心.

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33727189

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档