【问题标题】:NodeJS: "ENOENT" warning messages with sessionsNodeJS:带有会话的“ENOENT”警告消息
【发布时间】:2015-10-01 23:46:43
【问题描述】:

我将 node 与 express-session 和 session-file-store 包一起使用。会话数据使用 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'

【问题讨论】:

    标签: node.js session express express-session


    【解决方案1】:

    所以当我尝试我的第一个 NodeJS/Express 示例项目时,我确实遇到了同样的消息。

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

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

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

    【讨论】:

    • 另一种解决方案:使用选项会话文件存储选项retries: 0:它将放弃未知会话而不重试。在大多数用例(本地文件系统)中,重试是没有用的。
    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2017-08-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-17
        • 1970-01-01
        • 1970-01-01
        • 2016-07-05
        相关资源
        最近更新 更多