首页
学习
活动
专区
工具
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应用程序 Procfileweb: 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,因为Herokugit要在一起协同工作。...开始之前,您必须在网站上创建一个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,应用部署在MonoXSP网络服务器。 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 创建自己账号,并部署成功。 如果你做好了,可以发到群里向小伙伴儿炫耀一下哦。

    1.9K10

    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

    在 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

    20K30

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

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

    4.8K40

    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 实例,需要每个实例监听不同端口号。

    7.8K30

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

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

    53120

    如何用纯 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 总结 在这个软件开源时代,没有借口不从开放可信被测试过代码中学习。

    91220

    Ubuntu下node.js项目发布到heroku

    关于heroku Heroku是一个云平台服务商(PaaS),支持多种编程语言,用作Web应用程序部署模型。...Heroku是最早云平台之一,自2007年6月开始开发,当时它只支持Ruby编程语言,但现在支持Java,Node.js,Scala,Clojure,Python,PHPGo。...出于这个原因,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

    微服务应具备12个属性

    Build, release, run 构建一个可部署应用程序构件各个阶段,把这个构件配置进行结合,然后基于这个“构件配置”结合体来启动一个或多个进程,这些进程是严格独立分离。...进程们可以被快速启动以及优雅关闭。这些方面使得我们可以快速而有弹性扩展、快速而有弹性真对更新进行部署以及快速而有弹性崩溃中恢复过来。...持续集成持续部署,也就是CI/CD,能够保证development, staging以及production各个环境尽可能相似甚至一样。...Admin processes task管理,如数据库迁移,都可以过去那种一次性进程做法中迁移到应用程序长时间运行进程。...这就使得应用程序可以通过一种简单而弹性扩容缩容,从而轻松地实现自动化!在大多数情况下,底层平台只需要简单复制已有的环境,再加上所需数量,然后启动这些进程

    1.1K90

    Node.js 知识要点

    Node.js 产生初衷,是 Ryan Dahl 想设计一高性能 Web 服务器。他发现高性能 Web 服务器有几个要点:事件驱动,非阻塞I/O。...导出模块 导出当前模块一些公有方法属性,用 module.exports,如 module.exports = { foo: 'foo', fn: function(){} } 引入该模块程序就可以调用这些属性方法...包 复杂些模块由多个子模块组成。为了便于管理使用,我们可以把由多个子模块组成大模块称做包,并把所有子模块放在同一个目录里。...关于版本(version)设置,推荐遵循语义化版本。 我们在包根路径执行 npm init,可生成 package.json。 npm npm 是 Node.js 包管理工具。...如果用 npm 安装第三方包速度很慢,可以用国内淘宝镜像 cnpm。 API Node.js 提供来丰富api。几个主要 文件操作 网络操作 进程管理 所有 api 文档见这里。

    1.1K30
    领券