NodeJS:带有会话的"ENOENT"警告消息

ter*_*pak 4 session node.js express 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'
Run Code Online (Sandbox Code Playgroud)

Fut*_*e32 9

所以当我第一次尝试第一个NodeJS/Express示例项目时,我真的遇到了相同的消息.

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

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

new filestore({logFn: function(){}})
Run Code Online (Sandbox Code Playgroud)

  • 另一种解决方案:使用选项 session-file-store 选项 `retries: 0`:它将放弃未知会话而不重试。在大多数用例(本地文件系统)中,重试是无用的。 (2认同)