首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TypeError:无法读取未定义的快速速率限制的属性'ip‘

TypeError:无法读取未定义的快速速率限制的属性'ip‘
EN

Stack Overflow用户
提问于 2018-11-05 19:51:54
回答 2查看 1.1K关注 0票数 0

更新:因为我知道错误与我的代码无关。

大家好!

我注释了所有与express-rate-limit相关的代码,但是这个包仍然有一个错误。

我的代码:

代码语言:javascript
复制
const express = require('express');
const router = express.Router();
// const RateLimit = require('express-rate-limit');
const cors = require('cors')

// const apiLimiter = new RateLimit({
//     windowMs: 1000 * 60 * 5,
//     max: 5,
//     // message : "درخواست شما زیاد بوده لطفا 15 دقیقه دیگر دوباره تلاش کنید"
//     handler: function (req, res, /*next*/) {
//         res.json({
//             data: 'درخواست شما زیاد بوده لطفا 15 دقیقه دیگر دوباره تلاش کنید',
//             status: 'error'
//         })
//     }
// });

let prefixes = ["v1"];
for (let prefix of prefixes) {
    router.use(`/${prefix}/`, require(`./${prefix}/home`));
    router.use(`/${prefix}/auth`, cors(), require(`./${prefix}/auth`));
    router.use(`/${prefix}/admin`, cors(), require(`./${prefix}/admin`));

    // router.use(`/${prefix}/`, cors(), apiLimiter, require(`./${prefix}/home`));
    // router.use(`/${prefix}/auth`, cors(), apiLimiter, require(`./${prefix}/auth`));
    // router.use(`/${prefix}/admin`, cors(), apiLimiter, require(`./${prefix}/admin`));
}

module.exports = router;

错误文本为:

代码语言:javascript
复制
C:\Users\Sayyid Ali Sajjadi D\Desktop\gheymat\node_modules\express-rate-limit\lib\express-rate-limit.js:16
      return req.ip;
                 ^

TypeError: Cannot read property 'ip' of undefined
    at Object.keyGenerator (C:\Users\Sayyid Ali Sajjadi D\Desktop\gheymat\node_modules\express-rate-limit\lib\express-rate-limit.js:16:18)
    at rateLimit (C:\Users\Sayyid Ali Sajjadi D\Desktop\gheymat\node_modules\express-rate-limit\lib\express-rate-limit.js:54:25)
    at Object.<anonymous> (C:\Users\Sayyid Ali Sajjadi D\Desktop\gheymat\app\routes\index.js:20:39)
    at Module._compile (internal/modules/cjs/loader.js:688:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:699:10)
    at Module.load (internal/modules/cjs/loader.js:598:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:537:12)
    at Function.Module._load (internal/modules/cjs/loader.js:529:3)
    at Module.require (internal/modules/cjs/loader.js:636:17)
    at require (internal/modules/cjs/helpers.js:20:18)
    at Application.setRouters (C:\Users\Sayyid Ali Sajjadi D\Desktop\gheymat\app\index.js:35:17)
    at new Application (C:\Users\Sayyid Ali Sajjadi D\Desktop\gheymat\app\index.js:13:14)
    at Object.<anonymous> (C:\Users\Sayyid Ali Sajjadi D\Desktop\gheymat\server.js:4:1)
    at Module._compile (internal/modules/cjs/loader.js:688:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:699:10)
    at Module.load (internal/modules/cjs/loader.js:598:32)
[nodemon] app crashed - waiting for file changes before starting...

请帮帮我!我该怎么办?

EN

回答 2

Stack Overflow用户

发布于 2018-11-05 19:57:32

我认为你应该这样使用它

代码语言:javascript
复制
router.use(`/${prefix}/`, cors(), apiLimiter, require(`./${prefix}/home`));
票数 1
EN

Stack Overflow用户

发布于 2018-11-05 20:06:07

如果你检查apiLimiter的类型,你会得到'object‘。除非typeof函数是‘apiLimiter’,否则不能调用apiLimiter()。

David的解决方案应该能起到作用

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

https://stackoverflow.com/questions/53153883

复制
相关文章

相似问题

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