我有一个我在我的应用程序中使用的函数,该函数的一个参数是一个对象:
const checkValues = {
promoId: ...,
...
unsaved: !JSON.parse(localStorage.getItem('unsaved')) ? [] : JSON.parse(localStorage.getItem('unsaved'))
}
但是,我在提交项目时收到的唯一错误是:
ReferenceError:未定义localStorage 在对象。 (/home/meow/Development/dmc/cli_universal/dist/server.bundle.js:4145:23) 在 webpack_require (/home/meow/Development/dmc/cli_universal/dist/server.bundle.js:21:30) 在对象。 (/home/meow/Development/dmc/cli_universal/dist/server.bundle.js:4119:67) 在 webpack_require (/home/meow/Development/dmc/cli_universal/dist/server.bundle.js:21:30) 在对象。 (/home/meow/Development/dmc/cli_universal/dist/server.bundle.js:1728:69) 在 webpack_require (/home/meow/Development/dmc/cli_universal/dist/server.bundle.js:21:30) 在对象。 (/home/meow/Development/dmc/cli_universal/dist/server.bundle.js:1803:70) 在 webpack_require (/home/meow/Development/dmc/cli_universal/dist/server.bundle.js:21:30) 在对象。 (/home/meow/Development/dmc/cli_universal/dist/server.bundle.js:1509:79) 在 webpack_require (/home/meow/Development/dmc/cli_universal/dist/server.bundle.js:21:30)
如何检查localStorage是否存在?
答案 0 :(得分:1)
如果您查看Universal Starter的文档,请参阅以下部分(作为问题的一部分):
窗口,文档,导航器和其他浏览器类型 - 不存在 服务器 - 所以使用它们,或任何使用它们的库(jQuery for 例子)不起作用。
我认为这就是您收到此错误的原因。
答案 1 :(得分:0)
localstorage是一个浏览器组件,你试图在服务器端使用它,当你只在浏览器端时,你必须确保你正在调用localstorage。
为此你可以使用angular isPlatformBrowser模块。
例如
import { isPlatformBrowser } from '@angular/common';
constructor(@Inject(PLATFORM_ID) private platformId: any) {}
ngOnInit() {
if (isPlatformBrowser(this.platformId)) {
this.id = localStorage.getItem('id');
}
}
答案 2 :(得分:-1)
$ scope。$ watch应该解决您的问题,理想情况下,当您尝试调用scop之外的函数时,您需要添加$ watch以将其呈现给它。