如何在 ES6 中配置 express 路由器?

Posted

技术标签:

【中文标题】如何在 ES6 中配置 express 路由器?【英文标题】:How to configure express router along with ES6? 【发布时间】:2016-02-14 05:33:27 【问题描述】:

我在 express 中有以下用于路由器文件的代码。

import express from 'express';
import  _  from 'lodash';
import  Devices, OwlElecMonitors  from '../models/';

var router = express.Router();

router.get('/api/devices/:id',function (req, res) 
    console.log(req);                   
    Devices.getDevicesByUserId( userId: req.params.id ,function(err, resp) 
        res.send(resp);
    );
);

export default router;

我正在尝试使用以下代码将其导入主文件

import api from './routes';
app.use('/api', api);

但代码返回 404 错误。我哪里错了?我需要进行哪些更改才能使其正常工作?

【问题讨论】:

你是怎么运行这个的?即使使用 --harmony_modules 标志,我也无法让 ES6 模块工作。 使用打字稿会帮助你 【参考方案1】:

也可以通过跳过挂载参数来解决:

import api from './routes';
app.use(api);

【讨论】:

这实际上对我有用。有趣的是,如果我提供 mount 参数 - 它会中断并返回“Cannot GET /foo”......为什么? 啊,找到了: // 使用路由器和 401 任何通过 app.use('/admin', router, function (req, res) res.sendStatus(401) ) 在:expressjs.com/en/guide/using-middleware.html【参考方案2】:

您的 api 当前设置为 /api/api/devices/:id。 从路由器获取定义中删除/api

router                  
    .get('/devices/:id',function (req, res)  

【讨论】:

谢谢,这就是问题所在。

以上是关于如何在 ES6 中配置 express 路由器?的主要内容,如果未能解决你的问题,请参考以下文章

如何配置单臂路

如何在 Express 中修复这个 ES6 承诺链?

express框架路由配置及congtroller自动加载

如何设置 Apache ProxyPass 以保留 Express 路由

如何使用 Express 和 NGINX 设置路由?

Express 框架中的路由