錯(cuò) Cannot find module ‘./internal/tslib.js‘:TaoToken 環(huán)境下的排查與修復(fù))
1. 這個(gè)報(bào)錯(cuò)到底卡在哪openclaw onboard --install-daemon 與 tslib.js 的關(guān)系openclaw onboard --install-daemon是 OpenClaw 初始化守護(hù)進(jìn)程的入口命令它會(huì)把 CLI 本體、后臺(tái) daemon 以及一批運(yùn)行時(shí)依賴(lài)一次性裝好。你敲下這條命令后看到Error: Cannot find module ./internal/tslib.js說(shuō)明 Node 在加載某個(gè)包時(shí)按相對(duì)路徑去找internal/tslib.js這個(gè)文件結(jié)果沒(méi)找到。注意關(guān)鍵詞是「相對(duì)路徑」——./internal/tslib.js不是從 node_modules 根目錄找而是從報(bào)錯(cuò)那個(gè)包自己的目錄里找。這個(gè)報(bào)錯(cuò)最常出現(xiàn)在anthropic-ai相關(guān)依賴(lài)的深層嵌套結(jié)構(gòu)里。tslib 本來(lái)是 TypeScript 編譯后代碼的運(yùn)行時(shí)輔助庫(kù)正常安裝時(shí)它會(huì)被放在包的internal/子目錄下。一旦 npm 在安裝這個(gè)深層依賴(lài)時(shí)網(wǎng)絡(luò)中斷、緩存寫(xiě)壞或者包本身發(fā)布時(shí)打包不完整這個(gè)文件就會(huì)缺失于是 require 直接拋錯(cuò)。它和 TaoToken 的關(guān)系在于TaoToken 提供統(tǒng)一的 Key 與 API 通道OpenClaw 通過(guò)它去調(diào)用模型能力。但依賴(lài)安裝這一層和 API 通道是兩回事——報(bào)錯(cuò)發(fā)生在本地文件系統(tǒng)不是網(wǎng)絡(luò)鑒權(quán)。很多人一看到報(bào)錯(cuò)就以為是 Key 配錯(cuò)了其實(shí)方向反了。這篇就按「依賴(lài)完整性 → Node 版本 → 安裝路徑」三個(gè)角度把這條命令從報(bào)錯(cuò)到 daemon 正常啟動(dòng)走一遍。適合已經(jīng)在用 OpenClaw、并且把模型請(qǐng)求接到 TaoToken 通道上的開(kāi)發(fā)者。2. 先把 TaoToken 通道準(zhǔn)備好Key 與接入信息在動(dòng)依賴(lài)之前先把上層通道確認(rèn)好避免修完依賴(lài)又卡在鑒權(quán)上。TaoToken 的定位是統(tǒng)一 Key/API 通道你只需要一個(gè) Key就能在 OpenClaw 這類(lèi)工具里對(duì)接模型能力不用為每個(gè)模型單獨(dú)維護(hù)一套憑證。你需要拿到兩樣?xùn)|西一個(gè)是 API Key一個(gè)是接入地址。Key 在控制臺(tái)的 API Keys 頁(yè)面創(chuàng)建地址用https://taotoken.net/api這個(gè)地址不加任何查詢(xún)參數(shù)。創(chuàng)建 Key 的入口在這里控制臺(tái) API Keyshttps://taotoken.net/console/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentopenclaw_tslib拿到 Key 之后先別急著寫(xiě)進(jìn) OpenClaw 配置用一條最簡(jiǎn)請(qǐng)求驗(yàn)證通道本身是通的。這一步能把「通道問(wèn)題」和「依賴(lài)問(wèn)題」徹底分開(kāi)——如果這條命令都失敗那后面修 tslib 也沒(méi)意義。curl -sS https://taotoken.net/api/v1/models \ -H Authorization: Bearer $TAOTOKEN_API_KEY \ -H Content-Type: application/json返回里能看到模型列表就說(shuō)明 Key 和通道都正常。把 Key 存成環(huán)境變量后面 OpenClaw 直接讀它避免明文寫(xiě)進(jìn)配置文件# Linux / macOS export TAOTOKEN_API_KEYsk-你的key # Windows PowerShell $env:TAOTOKEN_API_KEY sk-你的key如果你更想先在網(wǎng)頁(yè)里確認(rèn)模型能不能正常對(duì)話(huà)可以直接用模型對(duì)話(huà)頁(yè)試一句比命令行更直觀(guān)模型對(duì)話(huà)https://taotoken.net/model-chat?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentopenclaw_tslib通道確認(rèn)沒(méi)問(wèn)題再回到openclaw onboard --install-daemon的依賴(lài)修復(fù)上。3. 可復(fù)制配置三步定位 tslib.js 缺失3.1 第一步確認(rèn)報(bào)錯(cuò)包與文件是否真的缺失先別急著重裝先定位到底是哪個(gè)包缺文件。用 Node 直接打印模塊解析路徑比盲猜快得多# 找到 openclaw 全局安裝位置 npm root -g # 進(jìn)入全局 node_modules搜索 tslib.js 的實(shí)際分布 find $(npm root -g) -name tslib.js -path *internal* 2/dev/nullWindows PowerShell 用這條npm root -g Get-ChildItem -Path (npm root -g) -Recurse -Filter tslib.js -ErrorAction SilentlyContinue | Where-Object { $_.FullName -like *internal* }如果輸出為空說(shuō)明internal/tslib.js確實(shí)沒(méi)被裝下來(lái)屬于文件缺失如果輸出里有路徑但報(bào)錯(cuò)依舊那多半是 Node 版本或路徑解析的問(wèn)題往下看 3.2 和 3.3。3.2 第二步核對(duì) Node 版本與包要求./internal/tslib.js這種相對(duì)路徑解析對(duì) Node 版本和包導(dǎo)出規(guī)則比較敏感。先看當(dāng)前版本node -v npm -vOpenClaw 這類(lèi)工具通常要求 Node 18 以上部分新版本依賴(lài)需要 Node 20 LTS。如果你的版本偏低用 nvm 切一個(gè)穩(wěn)定版再重裝比在舊版本上反復(fù)折騰省事# 安裝并使用 Node 20 LTS nvm install 20 nvm use 20 node -v版本對(duì)齊后再執(zhí)行一次依賴(lài)重裝。這里建議先清緩存避免又下到壞文件npm cache clean --force npm install -g openclawlatest --verbose--verbose會(huì)打印每個(gè)依賴(lài)的下載與解壓過(guò)程如果 tslib 相關(guān)文件在安裝階段就報(bào)錯(cuò)日志里能直接看到是哪個(gè)包、哪一步斷的。3.3 第三步檢查安裝路徑與殘留文件如果版本沒(méi)問(wèn)題、緩存也清了還是報(bào)錯(cuò)那就是安裝路徑里有殘留的損壞文件。npm 的uninstall有時(shí)刪不干凈尤其是全局目錄下的舊包。手動(dòng)清一遍最有效。Windows 下全局 npm 目錄通常在%AppData%\npm進(jìn)去刪掉這幾樣如果存在%AppData%\npm\node_modules %AppData%\npm\openclaw %AppData%\npm\openclaw.cmdLinux / macOS 對(duì)應(yīng)的是$(npm root -g)和$(npm bin -g)下的 openclaw 可執(zhí)行文件。刪之前把里面其他重要的全局包記一下回頭一起重裝。清理完再重裝并強(qiáng)制走 HTTPS 拉取避免 SSH 方式在部分網(wǎng)絡(luò)下中斷導(dǎo)致文件不完整git config --global url.https://github.com/.insteadOf ssh://gitgithub.com/ npm install -g openclawlatest --verbose如果最新版依然報(bào)同樣的錯(cuò)說(shuō)明這個(gè)版本在打包上可能有問(wèn)題降一個(gè)穩(wěn)定版試試npm view openclaw versions --json # 先看歷史版本 npm install -g openclaw上一個(gè)穩(wěn)定版本號(hào) --verbose4. 驗(yàn)證請(qǐng)求daemon 是否真的起來(lái)了依賴(lài)修好后重新跑初始化命令并加上--verbose看詳細(xì)過(guò)程openclaw onboard --install-daemon --verboseWindows 上如果遇到執(zhí)行策略攔截用這條繞過(guò)powershell -ExecutionPolicy Bypass -Command openclaw onboard --install-daemon --verbose命令跑完后用openclaw doctor做一次自檢它會(huì)檢查 daemon 狀態(tài)、依賴(lài)完整性和配置項(xiàng)openclaw doctor自檢通過(guò)后再確認(rèn) daemon 進(jìn)程確實(shí)在跑# Linux / macOS ps aux | grep openclaw # Windows PowerShell Get-Process | Where-Object { $_.ProcessName -like *openclaw* }最后做一次端到端驗(yàn)證讓 OpenClaw 通過(guò) TaoToken 通道發(fā)一個(gè)最小請(qǐng)求確認(rèn)模型能正常返回。這一步同時(shí)驗(yàn)證了「依賴(lài)修復(fù)成功」和「通道配置正確」兩件事。如果你在驗(yàn)證模型響應(yīng)時(shí)想換個(gè)更輕的方式可以直接在模型對(duì)話(huà)頁(yè)發(fā)同一句 prompt 做對(duì)照模型對(duì)話(huà)https://taotoken.net/model-chat?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentopenclaw_tslib5. 本篇常見(jiàn)錯(cuò)排查報(bào)錯(cuò)依舊但文件已存在多半是 Node 版本和包的導(dǎo)出規(guī)則不匹配。切到 Node 20 LTS 后重裝別在舊版本上反復(fù)試。重裝后報(bào)權(quán)限錯(cuò)誤Windows 下用管理員 PowerShellLinux/macOS 下檢查全局目錄歸屬必要時(shí)用sudo或改 npm 全局前綴到用戶(hù)目錄。npm install卡在某個(gè)包不動(dòng)先npm cache clean --force再確認(rèn)鏡像源可用。國(guó)內(nèi)環(huán)境可以臨時(shí)切鏡像源加速但裝完建議切回官方源避免鏡像同步延遲導(dǎo)致版本對(duì)不上。daemon 啟動(dòng)后立刻退出看openclaw doctor的輸出通常是配置里 Key 或接入地址寫(xiě)錯(cuò)。確認(rèn)用的是https://taotoken.net/api且 Key 從環(huán)境變量讀取而不是硬編碼。降級(jí)后仍報(bào) tslib 缺失說(shuō)明問(wèn)題不在版本而在安裝路徑殘留。回到 3.3把全局目錄里的 openclaw 相關(guān)文件和 node_modules 徹底刪干凈再裝。改了配置但 daemon 沒(méi)生效daemon 通常需要重啟才會(huì)重讀配置。改完配置后重啟 daemon再跑一次openclaw doctor確認(rèn)。6. 長(zhǎng)期跑編碼與 Agent把通道固定下來(lái)如果你不只是偶爾用 OpenClaw而是長(zhǎng)期跑編碼任務(wù)或 Agent 流程建議把 TaoToken 通道固定成一套配置避免每次重裝都重新配。Key 統(tǒng)一從環(huán)境變量讀接入地址寫(xiě)死成https://taotoken.net/api這樣依賴(lài)升級(jí)、版本回退都不會(huì)影響通道本身。需要長(zhǎng)期跑編碼和 Agent 的場(chǎng)景可以看下 Coding Plan它更適合把模型調(diào)用穩(wěn)定接進(jìn)日常開(kāi)發(fā)流Coding Planhttps://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentopenclaw_tslib接入細(xì)節(jié)和參數(shù)說(shuō)明都在文檔里遇到配置項(xiàng)不確定時(shí)對(duì)照著改接入文檔https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentopenclaw_tslib回到這條報(bào)錯(cuò)本身Cannot find module ./internal/tslib.js的核心就一句話(huà)本地依賴(lài)文件缺失或路徑解析失敗和 API 通道無(wú)關(guān)。按「確認(rèn)文件缺失 → 對(duì)齊 Node 版本 → 清理安裝路徑」三步走基本都能修好。修完記得用openclaw doctor和一次真實(shí)請(qǐng)求做雙重驗(yàn)證別只看命令沒(méi)報(bào)錯(cuò)就以為成了。