首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Heroku总是启动"npm“,甚至从Procfile和特定的web进程开始。

Heroku 在启动应用程序时会根据 Procfile 中定义的进程类型来执行相应的命令。如果你发现 Heroku 总是启动 npm,即使你在 Procfile 中指定了特定的 web 进程,这可能是由于以下几个原因:

1. Procfile 格式不正确

确保你的 Procfile 文件格式正确,并且位于项目的根目录下。Procfile 应该只包含大写字母、数字和下划线,并且每行定义一个进程类型和对应的命令。

例如:

代码语言:javascript
复制
web: npm start

2. 默认行为

如果 Procfile 中没有明确指定 web 进程,Heroku 会尝试使用默认的启动命令。对于 Node.js 应用,默认命令通常是 npm start

确保你在 Procfile 中明确指定了 web 进程:

代码语言:javascript
复制
web: node index.js

3. 依赖问题

如果你的 package.json 文件中有 start 脚本,Heroku 会优先使用这个脚本。确保你的 package.json 中没有定义 start 脚本,或者明确指定你要使用的脚本。

例如:

代码语言:javascript
复制
{
  "scripts": {
    "start": "node index.js"
  }
}

4. 缓存问题

有时候 Heroku 的构建缓存可能会导致问题。你可以尝试清除缓存并重新部署应用:

代码语言:javascript
复制
heroku plugins:install heroku-repo
heroku repo:purge_cache -a your-app-name
git commit --allow-empty -m "Purge cache"
git push heroku main

5. 检查日志

查看 Heroku 的日志可以帮助你了解实际执行的命令。使用以下命令查看日志:

代码语言:javascript
复制
heroku logs --tail

示例

假设你的项目结构如下:

代码语言:javascript
复制
my-app/
├── Procfile
├── package.json
└── index.js

Procfile

代码语言:javascript
复制
web: node index.js

package.json

代码语言:javascript
复制
{
  "name": "my-app",
  "version": "1.0.0",
  "scripts": {
    "start": "node index.js"
  },
  "dependencies": {
    "express": "^4.17.1"
  }
}

index.js

代码语言:javascript
复制
const express = require('express');
const app = express();
const port = process.env.PORT || 3000;

app.get('/', (req, res) => {
  res.send('Hello World!');
});

app.listen(port, () => {
  console.log(`App listening at http://localhost:${port}`);
});

通过以上步骤,你应该能够确保 Heroku 正确启动你指定的 web 进程,而不是总是启动 npm

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

对Deis,Heroku,Flynn的一些观察

一句话,现在的应用程序从源代码到运行阶段太复杂,没有标准的,通用的方式。...整个过程及产出如下: 开发阶段:源代码构建阶段:发布包/可执行程序部署阶段:可运行的镜像(发布包+配置)运行阶段:进程、集群、日志、监控信息、网络 不论是Deis,Heroku,Flynn或者其他PaaS...部署到运行: 自动选择运行机器,为每个进程副本部署启动单独的容器,解决请求路由和负载均衡,并提供进程的管理——用户可以做扩缩容、查看日志、监控状态等、回滚历史的发布 为什么是这些功能?...在我看来,代码从发布到运行由两根轴组成。 纵轴: 源代码——发布包——可运行的镜像——进程 这里的关系是一步接一步,顺序往下,不论你用什么工具什么平台,这4步都是流水式的向下。.../Procfile web: bundle exec rails server -p $PORT 后面可以通过命令行来动态扩容程序 deis ps:scale web=4 纵向配置:环境变量 运行的发布包在不同的环境下有不一样的配置

1.1K60
  • 微服务架构之Spring Boot(八十四)

    63.2 Heroku Heroku是另一个流行的PaaS平台。要自定义Heroku构建,请提供 Procfile ,它提供部署应用程序所需的咒语。...以下示例显示了我们的入门REST应用程序的 Procfile : web: java -Dserver.port=$PORT -jar target/demo-0.0.1-SNAPSHOT.jar Spring...server.port 配置属性被馈送到嵌入式Tomcat,Jetty或 Undertow实例,然后在启动时使用该端口。$PORT 环境变量由Heroku PaaS分配给我们。 这应该是你需要的一切。...-> master 您的应用程序现在应该在Heroku上启动并运行。...亚马逊网络服务(AWS) Amazon Web Services提供了多种方法来安装基于Spring Boot的应用程序,可以是传统的Web应用程序(war),也可以是带有嵌入式Web 服务器的可执行jar

    2.2K10

    在Heroku上部署Node.js

    你需要安装Heroku ToolBelt才能使Heroku在你的系统上正常工作,同时你还需要在你的系统上安装GIT,因为Heroku和git要在一起协同工作。...开始之前,您必须在网站上创建一个Heroku帐户。 此外,您需要添加一个文件 - Procfile - 添加到项目的根目录。该文件包含一行代码,以此来帮助我们确定应用程序启动需要的文件的信息。...例如在文件名是app.js的情况下,Procfile文件中的代码便为web: node app.js。 让我们开始部署吧 步骤1 打开cmd,并找到项目的目录位置。...只需输入命令heroku login,然后按照要求输入用户名和密码就可以了: 第5步 第5步 在Heroku上创建一个应用。...如果您希望Heroku来为您决定应用的名称,请使用以下命令:heroku create。 第6步 现在我们剩下的最后一步就是将本地仓库的所有文件推送到服务器。

    3.6K80

    通过Mono 在 Heroku 上运行 .NET 应用

    它能够使用git命令push Heroku,构建Heroku,应用部署在Mono和XSP网络服务器。 result主要是基于原先我工作的同事Brandur。...开始 为了使用这个 .NET 编译包,先创建一个 ASP.NET MVC 4  网站,然后启用 NuGet 包仓库。...为了使这个解决方案能在 Mono 和 xbuild 中运行,我们需要进行一些处理: 在Web.config中添加System.Net.Http组件的重定向。...TestingMono 是一个相当简单的的MVC网站,有一个后台线程每秒输出一条消息。 为了运行这个后台线程,添加一个 Procfile 来启动命令行线程:mono WorkerTest.exe。...注意: connectionstring 是 从环境变量中读取的, 而不是像其他.NET应用一样从 Web.config 读取。 你可以在 这里 看到运行的例子。

    3.2K60

    三周学会小程序第三讲:服务端搭建和免费部署

    首先从 Application.java 开始: @SpringBootApplication 表示这个类是 Spring 项目的启动类。...话不多说,我们开始准备环境,首先你需要去 Heroku 官网注册一个账号,国外的网站访问有点慢,自行解决。...2,Heroku 会默认识别 Procfile 文件里面的命令作为部署命令: web: java -jar -Dspring.profiles.active=production target/jiuask-server...-1.0.0.jar 所以每当我运行部署的时候,Heroku 帮我们执行了一下 Procfile 文件,所以如果你的没有部署成功,仔细检查一下自己的配置是否正确。...4,修改项目名称,包括 pom.xml,package,Procfile 和 Readme。 5,使用 Heroku 创建自己的账号,并部署成功。 如果你做好了,可以发到群里向小伙伴儿炫耀一下哦。

    2K10

    在 Heroku 中部署 Node.js 应用

    为了更好的部署,你需要在系统中安装Heroku ToolBelt,同时,你也需要在系统中安装 Git ,因为 Heroku 依赖 Git 。 开始之前,你在Heroku网站上需要创建一个账户。...并且,你需要去增加一个文件 -- 一个可执行文件 -- 放到你的项目根目录。这个执行文件包含一行代码,用来配置哪个文件是应用启动入口文件的代码。...在我们这个示例中,这个启动文件的名字是 app.js,所以执行文件(Procfile)的代码是 web:node app.js。...让我们开始部署吧 步骤1 打开命令行(CMD)然后去到你的程序所在目录。我们需要为 Git 资源创建一个文件夹。为此,我们需要输入命令:git init。这将改变当前目录为 Git 资源目录。...步骤4 在这一步,需要登陆进你刚才创立的 Heroku 账户,输入命令 heroku login,然后根据请求提供用户名和密码。如下图: [图5] [图6] 步骤5 在 Heroku 中创建一个应用。

    2.8K100

    开源驱动12 factor现代化项目

    如何应用:无状态代码是基于 Web 的应用程序的基本原则。进程唯一应该做的是执行处理逻辑。应避免进程之间的副作用;进程不应影响应用程序的整体状态或应用程序中另一个进程的状态。...如何应用:某些端口号已成为特定服务的象征。例如,非安全 Web 应用程序的默认端口是 80 端口。安全网站通过 443 端口上的 HTTPS 访问。...Factor 8:并发 含义:扩展应用程序时,应通过添加更多进程来水平扩展,而不是垂直扩展单个进程。 如何应用:对按需水平扩展的支持已成为现代 Web 规模企业应用程序的关键功能。...正如并发原则所指出的那样,应用程序将以冗余的方式启动资源以满足当时的需要。因此,组件总是“来来去去”以满足流量需求。 当资源终止时,必须快速且优雅地进行。这意味着确保没有操作以无定形状态终止。...在一个运行良好的 IT 部门中,开发人员的习惯是在本地机器上开始编码会话之前,每天检查开发环境的更新。

    5210

    Spring Boot 进阶话题:部署

    部署是将应用程序从开发环境移动到可以供用户访问的生产环境的过程。Spring Boot提供了多种部署选项,包括打包为可执行jar文件,使用Docker容器化,以及部署到云平台。...打包Spring Boot应用 Spring Boot应用可以打包为包含所有依赖、类和资源的单一可执行jar文件,也称为“über-jar”或"fat jar"。...示例:部署到Heroku 为了部署到Heroku,首先在你的项目根目录下创建Procfile文件,内容如下: web: java -Dserver.port=$PORT -jar target/myapplication...open 这些命令将会部署你的应用到Heroku,并且打开一个浏览器窗口到你的应用。...Spring Boot的部署选项为开发者提供了灵活性和方便。无论是打包为jar文件、使用Docker容器化,还是部署到云平台,Spring Boot都能够支持简单和高效的部署流程。

    10510

    在 10 分钟内实现安全的 React + Docker

    大多数云提供商都提供了一种部署静态站点的方法。用 React 构建应用只是 JavaScript、HTML 和 CSS。它们是静态文件,几乎可以在任何 Web 服务器上使用。...用 npm start 启动你的应用。你将被重定向到 Okta 进行身份验证,然后返你的应用。如果你没有重定向,那是因为你已经登录。请在 private 窗口中重试来查看登录过程。...", "react-docker": "docker run -p 3000:80 react-docker" 然后就可以用 npm run docker 和 npm run react-docker...react-pack" 然后可以使用 npm run pack 和 npm run react-pack 来运行它们。...如果要标记和推送特定版本,可以用: docker image tag react-docker /react-docker:1.0 docker push <your-username

    20.1K30

    放弃“免费套餐”,Heroku的遗产又少了一个

    Heroku 的工程负责人 Jason Warner 说:“我相信 Heroku 是在 2014 年到 2017 年之间最具革命性的产品,对 Web 开发产业的推动作用非常大。...部署一个通用的栈非常困难,那时候,Rails 需要安装一个负载均衡器,为每个服务器提供反向代理,CGI 进程,并且可以随时监控和执行所有必要的操作。...之前的 Aspen 和 Bamboo 栈都有很大的限制,仅能支持特定栈的特定版本,并且有很多特殊的条件。...Cedar 让 Heroku 成为可以运行一切的平台——用户可以通过 Buildpack 和 Procfile 带来自己的栈,它复杂的内部状态机和路由层使得运行在其上的应用变得非常强大。...甚至在 Heroku 的“内核”中,你也可以进行交换,因此你仍然可以使用 Heroku 来构建、编排和监控你的应用,但是它们会在你自己的专用单租户服务器上运行。

    5.1K40

    ColyseusJS 轻量级多人游戏服务器开发框架 - 中文手册(系统保障篇)

    特性 列出所有活动房间 强制安排一个特定的房间 检查一个特定的房间 查看房间的状态 为客户端发送/广播消息 强制断开客户端连接 安装 安装模块: npm install --save @colyseus...npm install -g pm2 然后使用它启动你的服务器: pm2 start your-server.js Nginx 配置 server { listen 80; server_name...设置 npm start 命令,使其启动服务器。...EXPOSE 8080 CMD [ "npm", "start" ] Step 3 在同一目录中创建 .dockerginore 文件 node_modules npm-debug.log 这将防止您的本地模块和调试日志被复制到您的...driver 用于存储和查询可用于 matchmaking 的 rooms。 运行多个 Colyseus 进程 要在同一台服务器上运行多个 Colyseus 实例,需要每个实例监听不同的端口号。

    8K30

    使用Plotly Dash创建交互式仪表板的步骤和技巧

    下面是部署到 Heroku 的简要步骤:在你的项目根目录下创建一个名为 Procfile 的文件,并添加以下内容:web: gunicorn app:server在项目根目录下创建一个名为 requirements.txt...创建一个免费的 Heroku 帐户,并在 Heroku 上创建一个新的应用程序。将你的 GitHub 存储库与 Heroku 应用程序关联,并进行部署。...总结在本文中,我们深入探讨了如何使用 Plotly Dash 创建仪表板的步骤和一些技巧。我们从导入必要的库开始,创建了一个基本的 Dash 应用程序,并设计了仪表板的布局。...随后,我们讨论了如何将你的仪表板部署到服务器,使得其他人可以通过互联网访问和交互。我们提供了两种常见的部署方法:使用 Heroku 进行部署和使用 Docker 打包为容器并进行部署。...最后,我们强调了在部署过程中需要注意的安全性和稳定性问题。通过本文的指导,你可以开始使用 Plotly Dash 构建自己的数据仪表板,并将其部署到服务器上,以展示数据和洞察力,并与他人共享。

    58520

    如何用纯 Python 写 Web 应用?

    1 痛点 从我开始折腾数据分析工具的那一天,就没有想明白一件事儿——我打算把数据分析的成果做成一个 Web 应用,为什么这么难?...还真别说,最近,这个事儿从幻想,变成了现实。 2 样例 这不,我就用纯 Python 脚本写了个 Web 应用。...我编写的代码里,没有一丝半毫的 Web 框架,Javascript,甚至是 HTML 。 这玩意儿能用吗? 你自己来试试看。...它不仅教你如何设置环境,安装工具,写作代码,甚至连如何免费部署到 heroku 平台,让用户使用,都毫无保留地教给了你。 那篇文章,我用于参加少数派年度征文活动,所以就不能全文展示在这里了。...如果你学过 Javascript 和 Flask, Django 等 Web 应用开发技术,Streamlit 可以加快你的 Web 应用开发与测试进程。

    3.9K10

    最佳Node实践之实用十式: Node大师带来的启迪

    npm i compression-S 和完整的日志记录 — 不多也不少地依赖于环境. npm i morgan-S 放大 — 从Node开发的第一天开始考虑聚集和无状态服务。...有人 (1, 2, 3, 4) 甚至已经放弃使用Grunt、Gulp,喜欢更低级但更可靠的npm script。我完全可以理解他们的观点。...Scale up Node在异步处理上是很杰出的,这归功于它的非阻塞I/O以及它一直以来简洁的异步过程的代码。这带来了提前开启放大的机会,也许甚至就是第一行代码开始。...例如,这是如何开始使用pm2: `npm i -g pm2` 然后可以启动同一服务器的四个实例: `pm2 start server.js -i 4` 对于Docker,pm2 version 2+ 有...web:web db: image: redis 总结 在这个软件开源的时代,没有借口不从开放的可信的和被测试过的代码中学习。

    91920

    Ubuntu下node.js项目发布到heroku上

    关于heroku Heroku是一个云平台服务商(PaaS),支持多种编程语言,用作Web应用程序部署模型。...Heroku是最早的云平台之一,自2007年6月开始开发,当时它只支持Ruby编程语言,但现在支持Java,Node.js,Scala,Clojure,Python,PHP和Go。...出于这个原因,Heroku被认为是一个多语言平台,因为它允许开发人员以类似的方式在所有语言中构建,运行和扩展应用程序。...安装依赖包: $ sudo npm install -l 初始化git $ git init $ git add . $ git commit -m 'init' 创建heroku项目 $ heroku...create myfirstexpress 发布 $ git push heroku master 运行服务(可不需要,我的项目推送后直接运行了): $ heroku ps:scale web=1 检查服务运行状态

    2.5K40
    领券