由mac發(fā)布的npm包在windows下node-gyp rebuild失敗

問(wèn)題

寫(xiě)了一個(gè)node native addon包zip-node-addon, npm發(fā)布后在mac上npm install正常,能夠正常地node-gyp rebuild并使用, 但是在windows下測(cè)試的時(shí)候就報(bào)出了原c++文件的編譯錯(cuò)誤,比如說(shuō)某某標(biāo)識(shí)符未定義,導(dǎo)致不能正常的編譯出.node文件。

解決思路

我先在windows上直接git clone代碼下來(lái),嘗試node-gyp rebuild,發(fā)現(xiàn)能夠正常的node-gyp rebuild得到編譯后的.node,然后我就開(kāi)始對(duì)比兩份文件有什么區(qū)別

發(fā)現(xiàn)問(wèn)題

使用certutil -hashfile file.cc md5命令, 對(duì)比了npm install下來(lái)的文件和github上git clone下來(lái)的兩個(gè)同樣的文件,發(fā)現(xiàn)他倆的md5是不一樣的,原來(lái)雖然在vscode上使用“選擇文件進(jìn)行比較”對(duì)比兩個(gè)文件沒(méi)有差異,但是實(shí)際上他倆用了不同的換行符,一個(gè)是在mac上npm publish的mac本身的LF, 一個(gè)是github克隆下來(lái)自動(dòng)轉(zhuǎn)換為windows的CRLF,而當(dāng)我們?cè)趙indows上npm install zip-node-addon的時(shí)候得到的LF換行的文件,在編譯時(shí)的時(shí)候就出現(xiàn)了錯(cuò)誤識(shí)別,認(rèn)為我語(yǔ)法有問(wèn)題

解決辦法

知道原因后解決辦法就簡(jiǎn)單了,我直接在windows上克隆下來(lái)代碼,然后在windows上npm publish就好了,然后windows下install的時(shí)候就能正常編譯出.node文件了

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容