«Неразрешенная функция или метод csrfToken ()» внутри области обратного вызова маршрутизатора - PullRequest
0 голосов
/ 27 апреля 2019

Я использую промежуточное программное обеспечение CSRF в приложении express / node.js, работающем с IDE WebStorm.

Промежуточное ПО добавляет метод csrfToken к объекту запроса (то есть req.csrfToken ()), который возвращает строку токена.

Когда я вызываю метод внутри области функции обратного вызова, которая принадлежит основному маршруту (в точности как показано в примерах ), все работает нормально:

import express from "express";
import cookieParser from "cookie-parser";
import csrf from "csurf";
const app = express();
app.use(cookieParser()); 
const csrfProtection = csrf({cookie: true});
.
.
.
app.use(csrfProtection);
app.get('/getCsrfToken',csrfProtection,function(req,res){
    res.json(req.csrfToken());
});

Однако при вызове того же метода внутри области функции обратного вызова, которая принадлежит подправу (находится в другом файле), появляется предупреждение "Unresolved function or method csrfToken()":

import express from "express";
import csrf from "csurf";
const router = new express.Router();
router.use(csrfProtection);
const csrfProtection = csrf({cookie: true});  // cookieParser is already called in the main route as a middleware
router.use(csrfProtection);
router.get("/getCsrfToken",csrfProtection,function(req,res){
    res.json(req.csrfToken());
});
.
.
.
module.exports = router

После подобных вопросов я решил, что это может быть связано с типами, настроенными в Settings -> Languages & Frameworks -> JavaScript -> Libraries. Я скачал следующие библиотеки: Node.js Core, csurf, express и cookie-parser - ни одна из них не разрешила предупреждение.

Предупреждение не прерывает функциональность, но было бы неплохо избавиться от него и понять, почему это происходит - я был бы признателен за любой совет.

Заранее спасибо!

...