由mac发布的npm包在windows下node-gyp rebuild失败

问题

写了一个node native addon包zip-node-addon, npm发布后在mac上npm install正常,能够正常地node-gyp rebuild并使用, 但是在windows下测试的时候就报出了原c++文件的编译错误,比如说某某标识符未定义,导致不能正常的编译出.node文件。

解决思路

我先在windows上直接git clone代码下来,尝试node-gyp rebuild,发现能够正常的node-gyp rebuild得到编译后的.node,然后我就开始对比两份文件有什么区别

发现问题

使用certutil -hashfile file.cc md5命令, 对比了npm install下来的文件和github上git clone下来的两个同样的文件,发现他俩的md5是不一样的,原来虽然在vscode上使用“选择文件进行比较”对比两个文件没有差异,但是实际上他俩用了不同的换行符,一个是在mac上npm publish的mac本身的LF, 一个是github克隆下来自动转换为windows的CRLF,而当我们在windows上npm install zip-node-addon的时候得到的LF换行的文件,在编译时的时候就出现了错误识别,认为我语法有问题

解决办法

知道原因后解决办法就简单了,我直接在windows上克隆下来代码,然后在windows上npm publish就好了,然后windows下install的时候就能正常编译出.node文件了

你可能感兴趣的:(由mac发布的npm包在windows下node-gyp rebuild失败)