Я использую промежуточное программное обеспечение 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 - ни одна из них не разрешила предупреждение.
Предупреждение не прерывает функциональность, но было бы неплохо избавиться от него и понять, почему это происходит - я был бы признателен за любой совет.
Заранее спасибо!