【问题标题】:How to get heroku to detect nodejs buildpack?如何让heroku检测nodejs buildpack?
【发布时间】:2017-07-23 21:42:48
【问题描述】:

我正在尝试将 web 应用程序部署到 heroku,但不断收到此错误:

`-----> Failed to detect app matching https://codon-buildpacks.s3.amazonaws.com/buildpacks/heroku/nodejs.tgz buildpack`

这是我的应用文件结构的简化外观:

myProject
|__server
    |__server.js
|__react_component_1
|__react_componet_2
|__styles</p>

快速服务器是服务器目录中的 server.js,它将是我的应用程序的入口方式。

这个问题似乎已经被问过很多次了,我已经阅读了所有的答案,这是我尝试过的:

我从没有 package.json 文件的根文件夹 myProject 进行部署。我已经尝试使用 npm init 来设置 package.json,以便 heroku 可以将应用程序检测为 nodejs。我还确保 git 正在跟踪 package.json。我制作了一个 Procfile:web: cd server &amp;&amp; npm run start。我已经在 cli 中运行了命令来设置 buildpack:heroku buildpacks:set heroku/nodejs,但到目前为止都没有奏效。我还尝试了buildpacks:clear,在设置完所有内容后,如果我有一个 package.json,heroku 是否可以自动检测 buildpacks。

感谢任何帮助,谢谢。

【问题讨论】:

  • 请在输入heroku logs -n 300 后将终端中显示的内容输出,以显示最近的 300 行日志输出。那里的某些东西可能会给出导致问题的明确原因
  • 由于某种原因,我不允许编辑我的评论。意思是说“粘贴”输出,而不是过去

标签: node.js heroku


【解决方案1】:

根据Heroku的相关documentation on Node.js buildpacks:

当应用程序在根目录中有 package.json 文件时,使用 Heroku Node.js buildpack。

根据您的 Procfile 内容 web: cd server &amp;&amp; npm run start,您似乎在服务器目录中运行了 npm init,而不是根目录。

我认为如果你将package.json 和node_modules 文件夹下移到根目录,buildpack 问题将得到解决。只需确保将您的 Procfile 更改为 web: npm run start,因为它现在将是同一个目录。

【讨论】:

  • 嗨帕特,谢谢你的回答 - 服务器文件夹和反应组件文件夹都有自己的 package.json,我在搭建项目时运行了 npm init,但没有运行 npm在根文件夹(myProject)中初始化。但是,当我遇到这个问题时,我确实运行了 npm init。只是为了在发布后等待答案时,我将服务器文件夹的内容移动到根文件夹(myProject),当我尝试部署时,我得到了相同的消息。
  • **continued ** 然后我恢复了所有内容,cd 到根文件夹,删除了我的 heroku 应用程序,再次运行 heroku create 以查看是否是我的项目结构问题,同样的问题。我希望能提供更多信息。再次感谢您。
  • 为什么两个react组件文件夹都有自己的package.json?
  • 因为它们都使用 webpack 输出一个 .js 文件,该文件在服务器目录中的各个视图模板上提供服务
  • 如果您有一个前端 React.js 项目(React 组件的用途)和一个用于后端 API 的单独 Node.js 项目,我建议将它们设置为两个单独的Heroku 项目旨在减少耦合。或者甚至将您的前端站点放在 AWS S3 存储桶中以获取 static web hosting
猜你喜欢
  • 1970-01-01
  • 2017-01-19
  • 1970-01-01
  • 2016-10-10
  • 2017-01-10
  • 2015-10-06
  • 2016-06-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多