【发布时间】:2021-04-12 11:17:39
【问题描述】:
所以我们有一个 node.js 解决方案,在私有 GitLab 实例上的同一存储库中包含 3 个项目。
- 1st -> 我们通过 ci/cd 部署到第一个 Heroku 的 Node.js Web 应用程序
- 2nd -> 我们通过 ci/cd 部署到 2nd Heroku 的另一个 Node.js API
- 3rd -> 第一个和第二个包常用的包,我们希望与它们一起部署
所以我们 npm 将第三个包与第一个和第二个包链接。
当我们只有第一个和第二个包时,部署很好,我们没有任何问题。
注意:我们使用 DPL 在 Heroku 上进行部署
dpl --provider=heroku --app=$HEROKU_WEB --api-key=$HEROKU_API_KEY --skip_cleanup
但随后我们触发了 3 个包的部署,部署失败:
Installing dependencies
Installing node modules
npm ERR! code EEXIST
npm ERR! syscall mkdir
npm ERR! path /tmp/build_4b93de5e/node_modules/ai-validator
npm ERR! errno -17
npm ERR! EEXIST: file already exists, mkdir '/tmp/build_4b93de5e/node_modules/ai-validator'
npm ERR! File exists: /tmp/build_4b93de5e/node_modules/ai-validator
npm ERR! Remove the existing file and try again, or run npm
npm ERR! with --force to overwrite files recklessly.
npm ERR! A complete log of this run can be found in:
npm ERR! /tmp/npmcache.BtRYQ/_logs/2020-12-18T09_45_42_167Z-debug.log
-----> Build failed
根据日志,我们必须使用 npm install --force 但在 Heroku 上,我们没有这个权限。
从那里,我查找了几个解决方案,我发现了关于 git 的符号链接出错的事情,但现在似乎在 git 中解决了。
我主要发现这是不可能的,您必须将包托管在 npm 之类的地方,以便 Heroku npm 安装可以找到它。我们无法使用此解决方案,因为我们不允许这样做。
也可能是 DPL,但老实说,我不知道我能用它做什么。
所以我有点卡在那里。
有什么想法吗?
【问题讨论】:
标签: node.js heroku node-modules