因此,我们有一个node.js解决方案,在私有GitLab实例的同一个存储库上有3个项目。
一起部署到第1和第2包中常用的软件包
因此,我们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安装-强制,但在Heroku,我们没有一只手。
从这里,我找到了几个解决方案,我发现了一些关于符号链接出错的问题,但是现在似乎已经在git中解决了。
我主要发现这是不可能的,你必须把你的包放在像npm这样的地方,这样就可以通过Heroku安装找到它。这个解决方案对我们来说是不可用的,因为我们不能这样做。
它也可以是DPL,但老实说,我不知道我能用它做什么。
所以我被困在那里了。
有什么想法吗?
发布于 2021-01-08 14:42:41
我遇到了同样的问题,我发现这是他们的GitHub部署方法中的一个问题,至少在我的例子中是这样的。
我已经切换到他们的Heroku,它正确地识别了子模块,并能够部署应用程序。
给出一些观点;我的结构如下:
前端(react )用于构建应用程序,后端(express)服务于生产构建,是API服务器。Heroku首先在前端运行react script构建来构建产品构建,然后运行node ./back-end/main.js。
前端是我的顶级回购,后端是我的子模块。
front-end/
front-end/back-end (git submodule)假设您的子模块也是npm包,我必须添加我的后端文件夹作为package.json中前端的依赖项。这使得您的子模块包被正确地识别为依赖项,并且它的依赖程序包也通过npm下载(它们将存储在前端.节点-模块,而不是后端)。
"dependencies": {
[...]
"back-end": "file:back-end", // This points to ./backend
[...]
}我的Procfile位于最顶层的包(前端),它看起来如下:
web: node ./backend/main.js我不确定我的答案是否对任何事情都有帮助,但简单地说: GitHub部署对我没有作用,但是使用他们的CLI工具并在git上托管它确实有效。这可能不是用户问题。
https://stackoverflow.com/questions/65600363
复制相似问题