NodeJS:使用会话时出现“ENOENT”警告消息

11
我正在使用express-session和session-file-store包来进行node开发。该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'
3个回答

14

所以我刚刚在尝试我的第一个NodeJS/Express示例项目时遇到了相同的消息。

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

这可能不是您遇到的同样问题,但认为值得分享...懒惰的替代方法是将logFn选项替换为空函数:

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

5
另一个解决方案:使用选项session-file-store option中的retries: 0选项:它将放弃未知会话而不进行重试。在大多数情况下(本地文件系统),重试是无用的。 - Pascal Pixel Rigaux

2
在我的情况下,这并不是一个主要的问题,因为session-file-storeexpress-session的一部分,当express-session无法找到会话文件时,它只会创建新文件。然后,您可以像之前建议的那样隐藏错误日志。
new filestore({logFn: function(){}})

0

我通过chmod +x sessions解决了相同的问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接