NodeJS:"ENOENT" 会话警告消息

NodeJS: "ENOENT" warning messages with sessions

我将节点与 express-session 和 session-file-store 包一起使用。会话数据使用会话文件存储包作为文件存储在根目录中。但是,现在我的日志被阻塞了,因为消息 [session-file-store] will retry, error on last attempt: Error: ENOENT, open 'sessions/_jl2ijMBQHIvv8M1mYTcnFZGqwGo0t-v.json' 在短时间内访问的每个会话 cookie 出现 5 次。是什么导致了这个错误?它发生在我的 windows 开发机器和我的 ubuntu 服务器上。它显然无法访问该文件,但会话仍然有效。

这是我收到的突发错误之一:

[session-file-store] will retry, error on last attempt: Error: ENOENT, open 'sessions/tRI6WeZEO2Uyvr4ZaUGW6_CU32RjvFpW.json'
[session-file-store] will retry, error on last attempt: Error: ENOENT, open 'sessions/tRI6WeZEO2Uyvr4ZaUGW6_CU32RjvFpW.json'
[session-file-store] will retry, error on last attempt: Error: ENOENT, open 'sessions/tRI6WeZEO2Uyvr4ZaUGW6_CU32RjvFpW.json'
[session-file-store] will retry, error on last attempt: Error: ENOENT, open 'sessions/tRI6WeZEO2Uyvr4ZaUGW6_CU32RjvFpW.json'
[session-file-store] will retry, error on last attempt: Error: ENOENT, open 'sessions/tRI6WeZEO2Uyvr4ZaUGW6_CU32RjvFpW.json'

所以当我尝试我的第一个 NodeJS/Express 示例项目时,我确实 运行 进入了相同的消息。

我设法确定至少在我的示例项目中 Session 被声明为已销毁但 Cookie 从未被清除,因此加载的下一个页面使用旧 cookie 尝试访问过期的 session(已删除)导致要记录的消息。

这对您来说可能不是同一个问题,但我认为它值得分享...懒惰的替代方法是用一个空函数替换 logFn 选项:

new filestore({logFn: function(){}})

我通过 chmod +x sessions

解决了同样的问题

在我的例子中,这不是主要问题,因为 session-file-storeexpress-session 的一部分并且当 express-session 找不到会话文件时,他只是创建新文件。

然后您可以按照之前的建议隐藏错误日志

new filestore({logFn: function(){}})