首页 > 解决方案 > 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 集成?或者有人知道任何解决方法吗?

非常感谢

标签: angularckeditorserver-side-renderingangular-universalckeditor5

解决方案


window对象在服务器端渲染期间不可用,因为您的服务器(即 Node.JS)没有window对象 - 它是一个浏览器构造。

在 SSR 期间,您不能使用引用特定于浏览器的构造或对象(如窗口或 DOM)的代码。


推荐阅读