ZeroOne 繁體中文技術部落格

JSON.stringify 欄位不見了?undefined、null 與更新契約排錯
JavaScript 物件有欄位,JSON.stringify 後卻消失,先分清 undefined 在物件、陣列與根值的不同結果。本文提供可執行斷言與單欄更新函式,明確區分保留原值、設定新值和清空,拒絕不合法輸入,避免全域 replacer 悄悄改變 API 契約。
1128 字
|
6 分鐘
Cover Image of the Post
RegExp test 一下 true 一下 false?檢查 g、y 與 lastIndex
同一個 JavaScript 正則表達式重複 test,結果卻交替 true 與 false,或 filter 漏掉相同資料,先檢查 g、y 與 lastIndex。本文提供跨字串重現、無狀態驗證及保留掃描游標的測試,區分搜尋、整欄驗證和 sticky 解析的不同契約。
818 字
|
4 分鐘
Cover Image of the Post
Node.js 換目錄執行就 ENOENT?分清 cwd 與 import.meta.url
Node.js 腳本在專案目錄能讀檔,從排程或另一個目錄啟動就 ENOENT,先確認相對路徑的基準。本文以完整暫存 fixture 比較 process.cwd 與 import.meta.url,驗證同名錯檔、中文空白檔名及模組相鄰資源,並區分設定檔與內建素材的選擇。
1010 字
|
5 分鐘
Cover Image of the Post
Claude Code 啟動卡住:v2.1.311 的 CLAUDE.md 長清單修正
Claude Code 啟動或讀寫檔案時長時間凍結,可能與 CLAUDE.md 過長的清單項目有關。本文依 v2.1.311 官方修正,提供只輸出行號與長度的本機檢查器、隔離副本比較與升級後驗收順序,區分已確認的版本修正和仍待重現的個別原因,避免直接清空正式指令檔。
1278 字
|
6 分鐘
Cover Image of the Post
.gitignore 沒生效?已追蹤檔案要先從 Git 暫存區移除
檔案加入 .gitignore 後仍出現在 git status,常是因為它已被 Git 追蹤。本文用隔離儲存庫驗證逐檔 git rm --cached,區分忽略規則、暫存刪除與本機保留,補上 check-ignore --no-index 的診斷方式,避免重建整個 index,也不把停止追蹤當成清除歷史。
1229 字
|
6 分鐘
Cover Image of the Post
new Array(n).map() 為什麼沒執行?空槽與 Array.from 的初始化差別
new Array(n).map() 沒有建立預期項目,是因為 length 不代表每個索引都有值。本文用可執行斷言區分空槽與 undefined,說明 Array.from 的正確初始化方式、delete 留洞與 fill({}) 共用物件的陷阱,讓表單列、占位資料與索引清單各自擁有獨立狀態。
1142 字
|
6 分鐘
Cover Image of the Post
ERR_PACKAGE_PATH_NOT_EXPORTED:檔案存在,為什麼 Node.js 不能匯入?
Node.js 匯入套件內部檔案時出現 ERR_PACKAGE_PATH_NOT_EXPORTED,不一定是安裝損壞。本文用本機套件驗證 exports 的公開入口、深層路徑與 package.json 封鎖,提供呼叫端與依賴的判斷順序,避免靠刪 lockfile 或修改 node_modules 暫時掩蓋問題。
1142 字
|
6 分鐘
Cover Image of the Post
JSON 大整數 ID 變號:字串契約、BigInt 與解析精度檢查
JSON.parse 沒有報錯,API 的大整數 ID 卻可能已被 Number 捨入。本文用可執行測試重現兩個 ID 合併,說明字串契約、Number.isSafeInteger 的拒絕邊界,以及原始 JSON 搭配 reviver context.source 轉 BigInt 的條件與序列化限制。
1358 字
|
7 分鐘
Cover Image of the Post