laf
laf copied to clipboard
[bug] 安装 app-service 自带依赖的另一版本导致 app-service 启动失败
复现方法:
- 在依赖管理安装
[email protected]
,再安装一个非自带依赖,如vue@latest
- 重启服务
- 查看容器信息,发现 app-service 崩溃了,崩溃日志如下
发生这个问题的原因:
multer
是 app-service
启动服务所需要的依赖,当使用依赖管理安装另一个版本的 multer
时,这个另一个版本的 multer
会覆盖原来自带的 multer
,导致启动失败。
一些解决方案:
- 使用依赖别名,给
app-service
运行需要的依赖全部加上别名
npm install -S laf-internal-multer@npm:multer
- 使用
rollup
等打包工具将app-service
业务代码和所需依赖打包在一起,构建镜像时忽略 node_modules 以及 package.json。 - 将
app-service
的核心业务逻辑移动到另外一个包app-service-engine
,app-service
只用来调用app-service-engine
这个库的函数,这样app-service
只含有app-service-engine
这一个依赖。