2012-10-25 47 views
3

我试图优化我requireJS与r.js.的JavaScript应用程序不幸的是,它在遍历函数“localStorage”(浏览器内置的localStorage函数)时停止。的ReferenceError:未定义的localStorage - requireJS,r.js优化和localStorage的

错误消息:

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

如何解决这种类型的错误:

ReferenceError: localStorage is not defined

在错误occures的功能?可以在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 
+0

你最终做出是否有任何进展? – Waxen

+0

不是真的 - 看起来requireJS模块中的reqiureJS插件导致了这个问题。我转向UglifyJS,它基本上是一样的。尽管感谢您的帮助! – akluth

回答

1

首先,你在你的代码上面有一个错字。

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

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

应该是:

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



随着这种变化,我复制你的代码进入我的一个项目,它通过优化器运行得很好。你使用什么版本?我尝试了最新版本2.1.1。

如果这不是您正在使用的优化程序版本的问题,我会尝试将localStorage的引用更改为window.localStorage并查看是否有所作为。

+0

谢谢,这只是一个错字,这个错字不是原来的代码。我正在使用版本2.1.1,并试图使用window.localStorage - 未成功,现在未定义“窗口”。 – akluth

+0

我不知道究竟做的是什么,但至少表明它不使用localStorage的问题,而是与优化过程。一些快速谷歌搜索变成了这样:https://groups.google.com/forum/?fromgroups=#!msg/requirejs/Zt9FOu74NqA/utcTxVn78YIJ。检查你正在调用优化器的命令并确保它是正确的。 – Waxen