如何解决:无法读取节点 js 中未定义的属性“keycloak-token”?

Posted

技术标签:

【中文标题】如何解决:无法读取节点 js 中未定义的属性“keycloak-token”?【英文标题】:How to fix: Cannot read property 'keycloak-token' of undefined in node js? 【发布时间】:2019-11-27 10:40:03 【问题描述】:

我已经创建了领域和客户端。 keycloak json 放在根文件夹中。我仍然收到类似的错误,

Cannot read property 'keycloak-token' of undefined
TypeError: Cannot read property 'keycloak-token' of undefined at SessionStore.get (C:\Users\...\node_modules\keycloak-connect\stores\session-store.js:24:58)
var session = require('express-session');
var Keycloak = require('keycloak-connect');

var memoryStore = new session.MemoryStore();
var keycloak = new Keycloak( store: memoryStore );

【问题讨论】:

这能回答你的问题吗? How to fix 'TypeError: Cannot read property 'keycloak-token' of undefined' error in javascript? 【参考方案1】:

当您设置 app.use(keycloak.middleware()) 并且未配置会话存储时,您会收到此错误。 keycloak-connect 库正在尝试从尚未配置的会话中读取 keycloak-token 值。您可以通过提供 Authorization 标头(例如 Authorization: Bearer 123)来规避错误,但使用会话存储时的解决方案是对其进行配置。

有关完整示例,请参阅项目依赖项中的 node_modules/keycloak-connect/example/index.js。在下面的路由处理程序中使用multiple middlewares 的resource protection 的最小示例。

不过是advised,那就是:

MemoryStore,故意不是为生产环境设计的。它在大多数情况下都会泄漏内存,不会扩展到单个进程,并且适用于调试和开发。

const express = require('express')
const app = express()
const session = require('express-session');
const Keycloak = require('keycloak-connect');
var memoryStore = new session.MemoryStore();
var keycloak = new Keycloak( store: memoryStore );

// Configure session
app.use(session(
  secret: 'mySecret',
  resave: false,
  saveUninitialized: true,
  store: memoryStore
));

// Attach middleware
app.use(keycloak.middleware());

// Attach route handler for home page
app.get('/', keycloak.protect(), (req, res, next) => 
  res.json(status: 'ok')
)

// Start server
app.listen(3005)

【讨论】:

以上是关于如何解决:无法读取节点 js 中未定义的属性“keycloak-token”?的主要内容,如果未能解决你的问题,请参考以下文章

无法读取 Node JS 中未定义的属性“名称”

如何修复'TypeError:无法读取 Javascript 中未定义的属性'标题'

TypeError:无法读取反应js中未定义的属性'fn'

我该如何解决这个问题:未捕获的类型错误:无法读取 javascript 中未定义的属性“toString”

无法读取 discord.js 中未定义的属性“发送”

无法读取 node.js 中未定义的属性“then”?