Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 角度通用启动器,生产中的本地存储:使用';窗口';在browser.module中,使用生产构建引用本地存储中断_Angular_Angular Universal - Fatal编程技术网

Angular 角度通用启动器,生产中的本地存储:使用';窗口';在browser.module中,使用生产构建引用本地存储中断

Angular 角度通用启动器,生产中的本地存储:使用';窗口';在browser.module中,使用生产构建引用本地存储中断,angular,angular-universal,Angular,Angular Universal,关于使用localstorage和angular2,这里有一个很好的问答 这种方法似乎在“npm启动”时运行良好。但是,当您运行“npm运行生成”时,会出现以下错误: 类型“typeof../browser.module”上不存在属性“window” 出现了 上面写着“全球通缉” 窗口、文档、导航器和其他浏览器类型-在上不存在 服务器-因此使用它们,或任何使用它们的库(jQuery for 示例)将不起作用。如果你真的需要,你确实有一些选择 一些功能:如果需要使用,请考虑限制。 仅将它们发送给您

关于使用localstorage和angular2,这里有一个很好的问答

这种方法似乎在“npm启动”时运行良好。但是,当您运行“npm运行生成”时,会出现以下错误:

类型“typeof../browser.module”上不存在属性“window” 出现了

上面写着“全球通缉”

窗口、文档、导航器和其他浏览器类型-在上不存在 服务器-因此使用它们,或任何使用它们的库(jQuery for 示例)将不起作用。如果你真的需要,你确实有一些选择 一些功能:如果需要使用,请考虑限制。 仅将它们发送给您的主要客户,并在特定情况下使用 从Universal导入的iBrowser/iNode功能。进口{ isBrowser,isNode}来自“angular2 universal”;另一个选择是使用 “角度/平台浏览器”中的DOM

isBrowser包装器或使用平台浏览器是否适合在此处引用localStorage?有没有最好的写作方法的例子

e、 g在browser.module.ts中,是否应该为可分发捆绑包包装window.localStorage

import {LocalStorage} from './local-storage.ts';

export function ngApp() {
  return bootstrap(App, [
    // ...

    UserService,
    { provide: LocalStorage, useValue: window.localStorage}
  ]);
使用“npm运行-构建”可分发捆绑包

import {LocalStorage} from './local-storage.ts';

export function ngApp() {
  return bootstrap(App, [
    // ...

    UserService,
    { provide: LocalStorage, useValue: window.localStorage}
  ]);
另外,在运行npm start时,我会收到错误消息:意外的令牌u。

这似乎来自文件node.module.ts中的useValue中的“u”,因为该值已消失,并被替换为“没有令牌本地存储的提供程序!”

... 
providers: [
    // ...
    UserService,
    {provide: LocalStorage, useValue: {getItem() {} }}
]
...

任何人都会得到类似的东西。想法?

对于实际无法访问
窗口的服务器,您可以使用“假”存储服务,并使用DI在服务器模块上对其进行设置,而右侧的
窗口可以访问浏览器模块。可以找到一个很好的例子

谢谢Issac,我会在这个周末试一试,让你知道它是如何进行的。