我在WebStorm IDE上的express / node.js应用程序中使用CSRF middleware。
中间件将方法csrfToken添加到请求对象(即req.csrfToken()),该对象返回令牌字符串。
当我在属于主路由的回调函数范围内调用方法时(恰好如examples所示),一切正常:
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-它们都不能解决警告。
警告不会中断该功能,但是最好摆脱该警告并了解其发生的原因-我将不胜感激。
谢谢!