我如何 运行 Chart.js 与 Angular 10 SSR / 通用?

How do I run Chart.js with Angular 10 SSR / universal?

我正在尝试让 运行 Chart.js (ng2-charts) 在 Angular 10 上使用服务器端呈现的页面。不幸的是,它总是崩溃:

ERROR { Error: Uncaught (in promise): ReferenceError: window is not defined

ReferenceError: window 未定义

所以我的问题是是否有人能够运行?

发生这种情况的原因是因为您是 运行 使用 NodeJS 的 SSR,并且没有 window 对象,因此您需要更换 NodeJS。

我建议安装 domino

npm i --save-dev domino

然后在你的server.ts

const domino = require('domino');

const template = fs
  .readFileSync(path.join('dist/browser', 'index.html')) // Or whereever your rendered index.html is
  .toString();


const window = domino.createWindow(template);
(global as any).window = window;
(global as any).document = window.document;