Xiao
Xiao
 ## 背景 收到告警通知, ⚠️ 容器线程数异常(PID上限为15K,超过15K则无法新建进程)⚠️ 。该服务会定时通过 puppeteer 进行一些页面性能收集的任务,为什么残留了这么多进程没有正常退出? 进入终端调试后,发现了大量的 chrome defunct processes 🧟♀️🧟♂️ 僵尸进程。于是尝试在 puppeteer issue [Zombie Process problem. #1825](https://github.com/puppeteer/puppeteer/issues/1825) 中找一找答案。  ## 尝试解决 按照 puppeteer issue 中的建议,在 browser.close()...
 ## 问题定位 报错信息如下 ```bash Uncaught ReferenceError: exports is not defined at Module. (browser.js:13:1) at Module../node_modules/.pnpm/[email protected]/node_modules/abort-controller/dist/abort-controller.js (abort-controller.ts:62:1) at __webpack_require__ (bootstrap:84:1) at Object. (polyfill.js:4:1) at Object../node_modules/.pnpm/[email protected]/node_modules/abort-controller/polyfill.js (polyfill.js:21:1) at __webpack_require__ (bootstrap:84:1) ```...
 ## 背景  这两天帮兄弟团队新建一个 Next.js 项目,主要是内部的基础包,组件库等在最新的 next12 & webpack5 & react18 环境下跑通。其中遇见了如上图所示的编译错误, 即 .d.ts 文件没有设置对应的 loader 处理。  回头看一下报错处的代码 import BasicLogic from './BasicLogic', 没有写文件后缀怎么会被解析成 BasicLogic.d.ts, 而不是 BasicLogic.js 了 !?...
近期 iOS 客户端反映 WebView 中打开 h5 页面存在明显的白屏时间, 于是打算把后端接口延时高(> 150ms)的 h5 项目由现在的 SSR 改成 html 请求达到 Node 时率先返回构建时生成的骨架屏 html 主体, 然后再异步请求后端接口数据, 获取到接口数据后再追加到 html 响应流中。这样 Node 能够 1ms 内响应实际内容让用户先看到页面框架, 通过内网并发聚合的接口数据也能让客户端直接复用这部分数据更快展示出最终屏。 按理来说 h5...
 ## 热更新失败 无意间听到同学 A 说开发项目 B 这么久了, 开发时修改代码后页面内容未进行重新渲染, 甚至页面连刷新也没有 😨, 所以平时是手动刷新了一次浏览器, 惊讶之余就得快速解决这个问题。 ## 热更新介绍 不同于 nodejs 项目修改代码后 pm2, nodemon, forever 等会对进程进行一下重启生效, 前端代码修改后的热更新流程还是比较长的, 主要为 webpack-dev-server 通过 websocket 去通知到浏览器, 参考图如下 ...
 > 主要参考了 [单独编译 V8 引擎](https://zhuanlan.zhihu.com/p/102316528) 与 [Building V8 on an M1 MacBook](https://joyeecheung.github.io/blog/2021/08/27/binding-v8-on-an-m1-macbook/), 下面记录了一下构建过程中遇见的其他坑点, M1 编译 v8 为啥这么多坑 😢。 ## Failed to fetch file gs://chromium-gn/xxx * 问题简述: 运行 gclient sync...
## 背景 单元测试节点失败了, 点进来查看发现是一个内部的 Node.js C++ 插件运行时报错了 ❌, 错误信息为: undefined symbol: _ZN3leo6AppEnv9swimlane_B5cxx11E。 ## symbol 的基本概念 在计算机中,一个函数的指令被存放在一段内存中,当进程需要执行这个函数的时候,它必须知道要去内存的哪个地方找到这个函数,然后执行它的指令。也就是说,进程要根据这个函数的名称,找到它在内存中的地址,而这个名称与地址的映射关系,是存储在 “symbol table”中。 “symbol table”中的 symbol 就是这个函数的名称,进程会根据这个 symbol 找到它在内存中的地址,然后跳转过去执行。 ## 问题分析 了解到 symbol 的概念后, 我们知道了...
* 1. [背景](#1.0) * 2. [vite 与 snowpack](#vitesnowpack) * 3. [nopack](#nopack) * 3.1. [原理图](#3.1) * 3.2. [时序图](#3.2) * 3.3. [Q: 如何做到项目 0 改动接入 ?](#Q:0) * 3.4. [Q: nopack 这个名字是啥意思 ?](#Q:nopack)...
 > 最近更文较少, 主要忙于各大团购群买菜 + 做饭 + 做核酸 + 远程办公。从 3月30号 到今天小区已经封了 11 天, 上海疫情又创了新高 1015 + 22609 例。只希望这波疫情赶紧结束, 不要再出负面新闻了 😓 。图片来自封控前的一次囤货外出。 ## 背景 近期在对 SSR 项目进行 ***CDN和域名灾备*** 的改造, 同学...
## 背景 服务端渲染的项目本地模拟线上环境运行报了如下的一个错误,然而本地开发模式运行和真实的线上生产模式运行均没有问题。当听到这个问题描述时,我只觉得这个临床表现透露着诡异的氛围 😢 > 本地模拟线上环境是先构建出生产模式的代码,然后运行 SSR Server 。其目的是更接近真实的线上生产环境的效果, 通常用于复现与 debug 线上环境出现的问题。 ```html // 错误信息 Invariant Violation: You should not use outside a ``` ## 问题简述 上面的错误信息造成原因通常有两个 1. Switch 组件的上层没有...