【问题标题】:ReferenceError: localStorage is not defined - requireJS, r.js optimizer and localStorageReferenceError: localStorage 未定义 - requireJS、r.js 优化器和 localStorage
【发布时间】:2012-10-25 18:20:36
【问题描述】:

我正在尝试使用 r.js 优化我的 requireJS JavaScript 应用程序。不幸的是,它在运行“localStorage”函数(浏览器内置的 localStorage 函数)时停止。

错误信息:

ReferenceError: localStorage is not defined

发生错误的函数:

function getFromLocalStorage()
{
    return localStorage.getItem('foo') ? JSON.parse(localStorage.getItem('foo')) : {};
}

如何解决此类错误?是否可以在 r.js 优化器中使用 localStore?

更多信息:

构建脚本:

({
    appDir: "../",
    baseUrl: "js/",
    dir: "./build",
    mainConfigFile: "app.js",
    paths: {
        jQuery: "empty:"
    },
    name: "app",
    findNestesDependencies: true
})

应用结构:

/
---> /js (where app.js lies)
     ---> /app (here lies the file with the localStore-call)
     ---> /lib

【问题讨论】:

  • 你最终在这方面取得了进展吗?
  • 并非如此 - 似乎 requireJS 模块中的 reqiureJS 插件会导致问题。我切换到 UglifyJS,它基本上做同样的事情。不过感谢您的帮助!

标签: local-storage requirejs r.js


【解决方案1】:

首先,您在上面的代码中有错字。

我不想只编辑您的代码,但我认为:

 return localStorage.getItemfootv') ? JSON.parse(localStorage.getItem('foo')) : {};

应该是:

return localStorage.getItem('foo') ? JSON.parse(localStorage.getItem('foo')) : {};



通过这种更改,我将您的代码复制到我的一个项目中,并且它通过优化器运行得很好。你用的是什么版本?我尝试使用最新版本 2.1.1。

如果您使用的优化器版本没有问题,我会尝试将localStorage 的引用更改为window.localStorage,看看是否会有所不同。

【讨论】:

  • 谢谢,这只是一个错字,这个错字不在原始代码中。我也在使用 2.1.1 版本并尝试使用 window.localStorage - 不成功,现在没有定义“窗口”。
  • 我不确定该怎么做,但这至少表明这不是使用 localStorage 的问题,而是优化过程的问题。一些快速的谷歌搜索出现了这个:groups.google.com/forum/?fromgroups=#!msg/requirejs/Zt9FOu74NqA/…。检查你调用优化器的命令并确保它是正确的。
猜你喜欢
  • 2018-02-14
  • 2015-10-14
  • 1970-01-01
  • 2016-02-17
  • 1970-01-01
  • 2021-03-18
  • 2014-06-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多