angular - Angular Universal + CkEditor5:未定义窗口
问题描述
我正在运行一个使用CKeditor5"@ckeditor/ckeditor5-angular": "1.2.3"
和自定义构建的应用程序。我添加了 SSR(服务器端渲染 - Angular Universal)支持:
ng add @nguniversal/express-engine
当我运行时npm run dev:ssr
,出现以下错误:
ReferenceError: window is not defined
at Object../node_modules/@ckeditor/ckeditor5-build-classic/build/ckeditor.js (/Users/user1/angular-ssr/dist/angular-ssr/server/main.js:117340:3242)
at __webpack_require__ (/Users/user1/angular-ssr/dist/angular-ssr/server/main.js:20:30)
at Object../src/app/post/new-edit-tutorial/new-edit-tutorial.component.ts (/Users/user1/angular-ssr/dist/angular-ssr/server/main.js:228444:23)
at __webpack_require__ (/Users/user1/angular-ssr/dist/angular-ssr/server/main.js:20:30)
at Object../src/app/post/post.module.ts (/Users/user1/angular-ssr/dist/angular-ssr/server/main.js:229101:39)
at __webpack_require__ (/Users/user1/angular-ssr/dist/angular-ssr/server/main.js:20:30)
at Object../src/app/app.module.ts (/Users/user1/angular-ssr/dist/angular-ssr/server/main.js:227134:23)
at __webpack_require__ (/Users/user1/angular-ssr/dist/angular-ssr/server/main.js:20:30)
at Object../src/app/app.server.module.ts (/Users/user1/angular-ssr/dist/angular-ssr/server/main.js:227205:22)
at __webpack_require__ (/Users/user1/angular-ssr/dist/angular-ssr/server/main.js:20:30)
A server error has occurred.
有没有办法将 CkEditor5 与 Angular Universal 集成?或者有人知道任何解决方法吗?
非常感谢
解决方案
该window
对象在服务器端渲染期间不可用,因为您的服务器(即 Node.JS)没有window
对象 - 它是一个浏览器构造。
在 SSR 期间,您不能使用引用特定于浏览器的构造或对象(如窗口或 DOM)的代码。
推荐阅读
- powershell - 从 start-transcript 命令生成的日志文件多次产生 TerminatingError(New-Item)
- angular - Angular2-多选下拉菜单
- javascript - 在某个元素之后查找类,即使它们不是兄弟姐妹
- ios - iOS 13 和水平滚动:原生延迟加载?
- caching - MAMP - 本地主机上的页面不刷新 (PHP 7.3.8)
- java - 使用 Spring Boot 从 Kafka 消费时启动 gradle 项目时出错:“java.lang.IllegalStateException: Error processing condition on ...”
- php - VAR_DUMP 显示结果时未生成 JSON
- c# - 与工厂方法的定义混淆
- c++ - 前向声明函数和 SFINAE
- algorithm - 这个函数的空间和时间复杂度是多少,它根据从尾部的位置获取链表中的节点?