【问题标题】:Why Angular Universal is Not working properly为什么 Angular Universal 不能正常工作
【发布时间】:2019-09-16 13:45:50
【问题描述】:

根据官方 Angular 文档,我正在将现有的 Angular 应用程序转换为 Angular Universal。

构建完成后,当我导航到端口 4000 时,服务器因此错误而停止。

ReferenceError: requestAnimationFrame 未定义

这些是我遵循的步骤,基于官方文档

1.ng add @nguniversal/express-engine --clientProject projname

2.npm run build:ssr && npm run serve:ssr

【问题讨论】:

标签: node.js angular angular7 angular-universal


【解决方案1】:

requestAnimationFrame 是在浏览器中定义的,而不是在运行服务器端应用程序的节点中。在您的server.ts 中添加以下代码来定义它加上cancelAnimationFrame

global['requestAnimationFrame'] = function(callback, element) {
  let lastTime = 0;
  const currTime = new Date().getTime();
  const timeToCall = Math.max(0, 16 - (currTime - lastTime));
  const id = setTimeout(function() { callback(currTime + timeToCall); },
    timeToCall);
  lastTime = currTime + timeToCall;
  return id;
};

global['cancelAnimationFrame'] = function(id) {
  clearTimeout(id);
};

我希望这会有所帮助!

如果您在 SSR 方面遇到任何其他问题,check if this article already covers it

【讨论】:

  • 未处理的承诺拒绝:window.requestAnimationFrame 不是函数;区域: ;任务:空;值:TypeError:window.requestAnimationFrame 不是函数
  • 我收到上述 SSR 错误。知道为什么会这样吗?我还在 server.ts 中添加了上面的代码
  • 你需要在你的server.ts文件中在通用相关代码之前定义函数。如果你查看我链接的文章,有一个 sn-p,你可以从中获得灵感
  • 我看过那篇文章,并将它添加到 server.ts 文件中。我得到 requestAnimationFrame is not a function 错误,不是 requestAnimationFrame is not defined 错误。但是即使在控制台上出现此错误后,我的通用构建也可以毫无障碍地执行。对此有任何想法吗?
  • @RevathiSekar 同样的问题
猜你喜欢
  • 1970-01-01
  • 2019-02-08
  • 2016-07-16
  • 2019-01-04
  • 2020-09-03
  • 2016-10-10
  • 2016-10-24
  • 2017-02-27
  • 2017-07-08
相关资源
最近更新 更多