#JavaScript
共 63 篇文章
Node.js 输出被截断,增大 maxBuffer 仍无效
管道中输出尚未写完,生产方process.exit就可能丢失尾部。区分缓冲超限与过早退出,在实际子程序里设置退出码并完成关闭流程。
EventEmitter 的 async 监听器报错,try/catch 接不住
emit返回布尔值,不会等待async监听器。为自己的实例安排拒绝入口和同步error处理,保留同步抛错区别,任务完成需明确Promise接口。
fetch 先 text 再 json 报 Body is unusable:正文已经被读取
text和json消费同一个Response正文。检查日志与reader锁,只读一次再解析,区分已消费、被锁及空正文解析错误,保护日志内容。
Node.js fetch 发送流时报 duplex option is required
流式请求正文需把duplex字符串与body一起传给实际fetch入口。核对ReadableStream类型和封装选项,再走原上传流程验证内容与结果。
Vite 仍加载 PostCSS 插件
css.postcss 指向空配置文件却仍加载根目录插件,检查字符串的搜索起点语义。用内联对象隔离所需路径,再核对 CSS URL 和实际配置。
Svelte reset 报错
Svelte 页面报错后导航反复出现 bind_this 读取 r 的异常,核对已销毁 boundary 的 reset 与 5.57.2 生命周期守卫。
Vue 类实例 WeakMap 返回 undefined
类在WeakMap中保存原实例,代理方法的this可能不同。在集成入口采用markRaw或shallowRef,明确内部状态的UI更新方式。
Playwright POST 崩溃
Playwright POST 遇到提前 413、429 后报 write ECONNRESET,try/catch 没接住。核对 APIRequestContext socket 错误路径和正式 1.63.0 修复。
Svelte pending 一直不结束
同时含脚本与模板 await 的子组件提前销毁,旧 Svelte 续行可能抛 async_deriveds 并留住 pending。核对 5.57.2 计数清理修复。
Svelte 卸载后仍留住 derived
untrack 读取多层 derived 后,卸载组件可能仍被长期数据源留住。核对 Svelte 5.57.2 依赖连接修复与堆快照路径。
Vue 3 数组 push、sort 后 watch 不触发
数组ref和getter默认观察替换,Vue3.5起deep:1可观察结构变化。区分直接reactive监听、深层字段以及oldValue并非快照。
Vite 仍用旧配置
连续改 vite.config.ts 后,日志有两次变化却只完成一次重启,代理仍用旧配置。检查重启窗口与 Vite 8.3.4 的待处理队列。
Bun test 报 EBADF
Bun test 遍历大量生成目录后,macOS 子进程报 EBADF 或没有输出。定位旧扫描器的目录描述符保留,核对 1.4.1 修复与实际执行版本。
Node.js 还有 pending Promise,进程却退出了
pending Promise本身不会维持Node运行。检查完成生产方、循环等待与资源unref,修正真实任务生命周期,并区分ESM顶层await的退出行为。
JavaScript 数组含有 NaN,indexOf(NaN) 却返回 -1
indexOf 无法按严格相等规则匹配 NaN。需要索引时使用 findIndex 和 Number.isNaN,只判断存在则使用 includes,并避免把 -1 交给删除操作。
JavaScript 数字数组 sort 后,100 排在 2 前面
普通 JavaScript 数组默认按字符串比较,数字排序可能把 100 放到 2 前面。使用数值比较函数,保留原数组,并明确数字字符串、NaN 和稀疏数组的输入边界。
JavaScript 已给解构参数默认值,传 null 仍报 TypeError
解构参数的外层默认值只处理省略参数或 undefined。根据接口是否允许 null,选择修正调用方或在函数体内先归一化,再分别验证属性默认值。
JavaScript 在 forEach 中 await 请求后,结果数组仍提前返回
forEach 不会等待异步回调完成,外层 await 也无法收集请求结果。根据请求依赖选择 Promise.all 或 for...of,并检查返回值、结果顺序与失败后的副作用。


