问题
写了一个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文件了
网友评论