4

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
4

1 に答える 1

1

まず、上記のコードにタイプミスがあります。

私はあなたのコードを編集したくありませんでしたが、次のように仮定します:

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

はずです:

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



その変更により、コードを私のプロジェクトにコピーしたところ、オプティマイザを問題なく実行しました。どのバージョンを使用していますか? 最新バージョンの 2.1.1 で試しました。

使用しているオプティマイザーのバージョンに問題がない場合は、localStorageへの参照を変更window.localStorageして、違いが生じるかどうかを確認します。

于 2012-10-26T00:42:43.520 に答える