【问题标题】:localStorage suddenly brokenlocalStorage 突然坏了
【发布时间】:2016-05-19 16:13:26
【问题描述】:

编辑: 发现是 redux-persist 在补丁修订中进行了重大更改。


我正在用 Node、React、Redux、Webpack 等开发一个 webapp。其中一个包 (redux-persist) 在恢复状态(从 localStorage 读取)时突然抛出一个错误 (Uncaught TypeError: storage.getItem is not a function ( persistStore.js:99)。

提示:

  • 我同事的环境不会出现这个问题。
  • 这发生在尝试将我的包更新到 Babel 6 之后。但我不明白为什么这会相关。
  • 我试过npm cache clean
  • 我尝试删除并重新克隆我的存储库。
  • 我尝试了brew upgrade 和 OSX 更新(为什么还是不行!?)
  • 它发生在 ChromeSafari(这是我第一次打开它)和 Firefox(我为此目的而安装的)。
  • 我在使用 redux-persist 之前尝试过 git reset --hard; git clean -xfd; npm install 到一个状态,它没有抛出错误。

我的结论是它显然与我的环境有关,因为我在网上找不到任何东西,而且它在我同事的环境中无法重现。但我没有想法。

感谢您的帮助。

【问题讨论】:

  • 1.您使用的是支持 HTML5 localStorage 的浏览器版本吗? 2. 调用的范围是否正确(应该是 localStorage 是 window 对象的一部分 - 除非您专门使用闭包而不是传入 Window 引用。)

标签: javascript node.js local-storage redux


【解决方案1】:

这是 redux-persist@1.5.2 在我们实例化默认存储引擎的方式中的一个错误。

我刚刚发布了 1.5.3 解决了这个错误。

【讨论】:

    【解决方案2】:

    一个想法是您的浏览器可能处于隐身(私人)模式。 Safari 存在关于此的问题,请参阅此question

    【讨论】:

    • redux-persist 出于这个原因对 localStorage 调用进行了 try / catch。如果出现错误,它会执行 noop 并发出警告。不确定是否有更优雅的方式来处理这种情况......
    猜你喜欢
    • 2013-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-03
    • 2021-03-21
    相关资源
    最近更新 更多