Angular Universal 错误 ReferenceError:未定义 MouseEvent
Posted
技术标签:
【中文标题】Angular Universal 错误 ReferenceError:未定义 MouseEvent【英文标题】:Angular Universal error ReferenceError: MouseEvent is not defined 【发布时间】:2020-02-15 04:03:31 【问题描述】:我正在使用 Angular Universal 渲染 s-s-r,同时使用 Angular cli 命令:npm run build:s-s-r && npm run serve:s-s-r,我收到错误。
使用 Angular8
/home/xyz/projects/my-app/dist/server/main.js:139925
Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"])("design:paramtypes", [MouseEvent, htmlElement]),
^
ReferenceError: MouseEvent is not defined
at Module.UPO+ (/home/xyz/projects/my-app/dist/server/main.js:139925:84)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! patient-app@0.0.0 serve:s-s-r: `node dist/server`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the patient-app@0.0.0 serve:s-s-r script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! /home/vijay/.npm/_logs/2019-10-18T07_30_11_791Z-debug.log
【问题讨论】:
【参考方案1】:Document
、Window
、localstorage
、MouseEvent
等客户端代码在 Angular 应用程序的通用模式下运行时将不存在,因为您的第一页将在服务器上呈现。
因此,如果您的代码中存在任何此类代码,那么您需要像这样将您的客户端代码包装在 platformBrowser
中 -
import ..., PLATFORM_ID, ... from '@angular/core';
import isPlatformBrowser from '@angular/common';
constructor(
@Inject(PLATFORM_ID) private platformId: Object,
)
if (isPlatformBrowser(this.platformId))
// MouseEvent code
【讨论】:
无论您在哪里使用过mouse
事件或任何客户端事件。
当我们使用 localstorage 时,错误会说 localstorage 还是仍然会说 Mouse event?
它会说 localstorage。
这个解决方案对我不起作用。还是一样的例外。以上是关于Angular Universal 错误 ReferenceError:未定义 MouseEvent的主要内容,如果未能解决你的问题,请参考以下文章
Angular Universal 错误 ReferenceError:未定义 MouseEvent
带有nestjs的Angular-universal:错误:找不到模块'./drivers/node-mongodb-native/connection'
Angular Universal 不适用于 Angular Google 地图
尝试运行 Angular Universal 时出现“意外的令牌导入”错误
迁移 Angular Universal firebase 后,云函数抛出错误
dotnet core + Angular Universal + docker => 由于错误,预渲染失败:错误:找不到模块