【错误出现的地点】
最近为财务的一个小伙伴做的对账需求软件。使用了Electron来做一个桌面应用。但是当我引入了node-xlsx这个模块之后,就无法打包出正确的应用。但是直接运行的话,却没有问题。这个问题困惑了我很久。
【排查问题的过程】
首先一开始我打包成应用的时候,将源码打包成了asar包。这样的话无法看到打包后源代码的构成。于是我取消了这个选项。
接着我发现,在我打包生成的源代码文件夹中的node_modules文件夹,和node-xlsx相关的一些模块都变成了.symlink类型的文件。而这个文件我打开后发现是链接到我项目中node_modules的一些文件。而对于打包出的软件包,当运行的时候就没法找到这些文件。于是就报错,没有找到这些。
【问题产生的猜测】
经过排查,发现打包出的软件包中的node_modules文件夹中变成.symlink类型的文件, 刚好和项目中node_modules的文件中文件夹显示为快捷方式文件夹相一致。而导致这些出现的原因很可能是CNPM使用的一项提升下载速度的技术,当你已经全局下载过这些包,在你项目使用会使用link的方式来复用。貌似你复制粘贴这些文件的时候都不会出现问题,而打包却会出现。
当然这一切都只是我的猜测,具体产生的原因我还是不是很清楚,有了解相关方面的小伙伴,希望可以沟通一下。
【问题解决的办法】
2、把显示为.symlink的文件复制出来后,源文件删除,再把这些文件复制出来。
// 问题有点久远,文章写了一半忘记写完了。之后写的后两项。所以可能有记忆不准确的地方,以及没有图片说明。