首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法将具有本地依赖关系的node.js应用部署到Heroku

无法将具有本地依赖关系的node.js应用部署到Heroku
EN

Stack Overflow用户
提问于 2021-01-06 17:19:46
回答 1查看 619关注 0票数 1

因此,我们有一个node.js解决方案,在私有GitLab实例的同一个存储库上有3个项目。

  • 1 -> a Node.js web应用程序,该应用程序由ci/cd
  • 第二->部署到第1 Heroku,另一个Node.js API通过ci/cd
  • 第3 ->部署到第二Heroku,我们希望与

一起部署到第1和第2包中常用的软件包

因此,我们npm将第三个方案与第一个和第二个方案联系起来。

当我们只有第一个和第二个软件包时,部署是很好的,我们没有任何问题。

注意:我们使用DPL在Heroku上进行部署。

代码语言:javascript
复制
dpl --provider=heroku --app=$HEROKU_WEB --api-key=$HEROKU_API_KEY --skip_cleanup

但是,我们触发了3个包的部署,部署失败了:

代码语言:javascript
复制
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,但老实说,我不知道我能用它做什么。

所以我被困在那里了。

有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2021-01-08 14:42:41

我遇到了同样的问题,我发现这是他们的GitHub部署方法中的一个问题,至少在我的例子中是这样的。

我已经切换到他们的Heroku,它正确地识别了子模块,并能够部署应用程序。

给出一些观点;我的结构如下:

前端(react )用于构建应用程序,后端(express)服务于生产构建,是API服务器。Heroku首先在前端运行react script构建来构建产品构建,然后运行node ./back-end/main.js

前端是我的顶级回购,后端是我的子模块。

代码语言:javascript
复制
front-end/
front-end/back-end (git submodule)

假设您的子模块也是npm包,我必须添加我的后端文件夹作为package.json中前端的依赖项。这使得您的子模块包被正确地识别为依赖项,并且它的依赖程序包也通过npm下载(它们将存储在前端.节点-模块,而不是后端)。

代码语言:javascript
复制
"dependencies": {
    [...]
    "back-end": "file:back-end", // This points to ./backend
    [...]
}

我的Procfile位于最顶层的包(前端),它看起来如下:

代码语言:javascript
复制
web: node ./backend/main.js

我不确定我的答案是否对任何事情都有帮助,但简单地说: GitHub部署对我没有作用,但是使用他们的CLI工具并在git上托管它确实有效。这可能不是用户问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65600363

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档