2012-10-25 50 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