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
Node.js ReferenceError:未在angular universal中定义窗口_Node.js_Angular_Angular Universal_Angular Seo - Fatal编程技术网

Node.js ReferenceError:未在angular universal中定义窗口

Node.js ReferenceError:未在angular universal中定义窗口,node.js,angular,angular-universal,angular-seo,Node.js,Angular,Angular Universal,Angular Seo,我正在尝试使用@nguniversal/express engine,我已经安装并尝试运行它,但main.js文件中给出了错误 这就是我得到的错误 C:\Folder\ssr\dist\ssr\server\main.js:179450 })(window, function() { ^ ReferenceError: window is not defined at Object.rdXg (C:\Folder\ssr\dist\ssr\server\main.js:1

我正在尝试使用
@nguniversal/express engine
,我已经安装并尝试运行它,但main.js文件中给出了错误

这就是我得到的错误

    C:\Folder\ssr\dist\ssr\server\main.js:179450
})(window, function() {
   ^

ReferenceError: window is not defined
    at Object.rdXg (C:\Folder\ssr\dist\ssr\server\main.js:179450:4)
    at __webpack_require__ (C:\Folder\ssr\dist\ssr\server\main.js:26:30)
    at Module.+PDj (C:\Folder\ssr\dist\ssr\server\main.js:133:66)
    at __webpack_require__ (C:\Folder\ssr\dist\ssr\server\main.js:26:30)
    at Module.xCqK (C:\Folder\ssr\dist\ssr\server\main.js:198481:92)
    at __webpack_require__ (C:\Folder\ssr\dist\ssr\server\main.js:26:30)
    at Module.xLoe (C:\Folder\ssr\dist\ssr\server\main.js:200042:86)
    at __webpack_require__ (C:\Folder\ssr\dist\ssr\server\main.js:26:30)
    at Module.Mm/0 (C:\Folder\ssr\dist\ssr\server\main.js:89135:105)
    at __webpack_require__ (C:\Folder\ssr\dist\ssr\server\main.js:26:30)

A server error has occurred.
node exited with 1 code.
connect ECONNREFUSED 127.0.0.1:59195
我试过很多东西,但都不管用

导致问题的print函数,print js库使用了print函数

 const contentToConvert = document.getElementById('content');
this.selectedFunctionCode = htmlToImage.toPng;
const debugBase64 = this.debugBase64;
this.selectedFunctionCode(contentToConvert)
  .then((dataUrl) => {
        print(dataUrl, 'image');
  })
  .catch((error) => {
    console.error('oops, something went wrong!', error);
  });

由于某些对象(如localstorage、客户端中的窗口使用)未在服务器端定义,所以必须首先检查浏览器平台是否准备就绪,然后使用这些对象 为此,您可以这样做:

首先生成check-is-browservice.service.ts,如下所示:

export class CheckIsBrowserService {
  private isBrowser = new BehaviorSubject<boolean>(null);

  constructor() {}

  getIsBrowser(): Observable<any> {
    return this.isBrowser;
  }

  setIsBrowser(value: any) {
    this.isBrowser.next(value);
  }
}
然后生成服务,例如window.service.ts

class Window implements Window {
  readonly innerWidth: number;
}

@Injectable({
  providedIn: 'root',
})
export class WindowService {
  private config: Window;

  constructor(private checkIsBrowserService: CheckIsBrowserService) {
    this.config = new Window();
    this.checkIsBrowserService.getIsBrowser().subscribe((isBrowser) => {
      if (isBrowser) {
        this.config = window;
      }
    });
  }
  innerWidth() {
    return this.config.innerWidth;
  }
}
在组件中使用window.innerwidth时,必须将其更改为

x、 组件1.ts:

 constructor(private window: WindowService) {
   if (this.window.innerWidth() <= 1024) {
     //your code
   }
 }
构造函数(私有窗口:WindowsService){

如果(this.window.innerWidth()选中此选项,则在上面的建议中,错误出现在server.js文件中,但在我的示例中,它在main.js中进行所有更改后仍会出现相同的错误。是否@HostListener('window:resize',['$event']))这也需要有条件。你确定做了所有的更改吗?因为我测试它知道并且可以使用@HostListener('window:resize',['$event'])。否此条件仅用于测试,如果你想使用window.innerWidth,并且在结束时如果可以,你可以共享你的代码吗?是的,有print()给出错误的函数你的代码在哪里?你共享了吗?在描述中添加了代码
 constructor(private window: WindowService) {
   if (this.window.innerWidth() <= 1024) {
     //your code
   }
 }