云开发用到的一个库有点bug,我把那个库的源码下载到本地,在本地修正了问题,然后把云函数改为依赖本地的模块,使用云函数本地调试是可以成功运行得到正确结果,但是点击:"上传并部署,云端安装依赖(不上传 node_modules)"的时候报错了。不知道是哪里没有操作对还是云开发就不支持这种本地npm模块的方式?
(使用本地模块我是在package.json里这样写,然后把库的源码放到【lib/模块文件夹】里:
"dependencies": {
"模块名": "file:lib/模块文件夹"
}
总结一下吧。。之前用了本地模块,在本地Debug流程是能跑通的,但是无法使用"上传并部署,云端安装依赖(不上传 node_modules)"选项(上传一半报错)。腾讯云的技术支持让我用上传所有文件的方式,好不容易把大小搞到50mb以内,传上去之后发现调用云函数报错,看报错应该是模块加载失败,到腾讯云后台看云函数的文件,发现node_modules里各种文件夹都是symbolic link,而且链接的路径是我电脑本地的路径,感觉是这里的问题,google搜到一篇如何不创建link的回答,https://stackoverflow.com/questions/21425980/npm-install-without-symlinks-option-not-working
按着捣鼓了半天,cygwin里的rsync还和本地的Unreal冲突。。实在蛋疼不想弄了。。最终放弃使用本地模块,直接注册一个npm账号,把库传到npm上,云函数改为依赖远程库,半小时搞定。。建议后来人还是使用远程库比较快。。
(如果有大佬知道为什么npm install有时候是链接的形式,有时候不是链接,还请教教我~
云端环境是一个独立的docker虚拟环境,你在本地做的一切修改都必须和云端保持一致。你在本地依赖的是本地的包,那这个包你有没有上传到云端,并让云端代码正确加载它呢