本文介绍如何在本地调试 SAP Spartacus Node.js 利用。
依照这个链接 装置 Spartacus.
在 package.json 的 scripts 区域,生成了一个名叫 build:ssr
的指令,默认依照 –prod 参数来构建。
如果应用这个 script,咱们不得不调试 minified and uglified code
, 不太直观。
也就是说,去掉 --prod
和 :production
应用如下命令行:
ng build && ng run mystore:server
采纳这个形式构建出的 main.js, 代码是可读的:
(3) 增加一个 --inspect-brk
选项:
node --inspect-brk dist/mystore/server/main.js
启动:
npm run serve:ssr
(4) Chrome 地址栏输出 chrome://inspect
, 点击 inspect
hyperlink:
断点会主动触发,停在 main.js 的第一行:
当初就能够开始调试了:
引起 Node.js 利用高 CPU 占用率的一些可能性:
- 循环和迭代。如果不限度可迭代汇合的大小,任何 .map、.reduce、.forEach 和其余迭代办法调用都可能导致问题。for 和 while 循环也存在同样的潜在问题。如果业务层面上必须解决大型汇合,请应用流或将汇合,拆分为块并异步解决它们。它将在不同的 EventLoop 迭代之间调配负载,缩小阻塞效应。
- 递归函数。这里的原理雷同,你须要思考递归深度,特地是当函数是同步的时候。
- 微小的有效载荷。Node.js 是为解决大量异步操作而创立的,例如向数据库发出请求或内部 API 调用。在来自内部起源的有效载荷很小之前,它能够完满运行。不要遗记 Node.js 须要先读取一个有效载荷并将其存储在内存中,而后将 JSON 解析为一个对象(减少了更多内存),对该对象执行一些操作。来自 Node.js 服务的微小负载也可能是一个问题,因为 Node.js 首先将对象字符串化为 JSON,而后将它们发送到客户端。所有这些操作都可能导致高 CPU,确保无效负载大小不是很大,应用分页,并且不要预填充不必要的数据。对于 GraphQL 服务,应用复杂性来限度响应负载。