【问题标题】:How to run `grunt connect` process on Heroku如何在 Heroku 上运行“grunt connect”进程
【发布时间】:2014-10-11 05:34:48
【问题描述】:

我想知道是否可以运行 grunt-contrib-connect 命令以使用 Heroku 提供静态文件。

我的 Grunt 文件如下所示:

module.exports = function(grunt) {

  // Project configuration.
  grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),
    connect: {
      server: {
        options: {
          port: process.env.PORT || 5000,
          base: 'www',
          keepalive: true
        }
      }
    }
  });

  grunt.loadNpmTasks('grunt-contrib-connect');

  // Default task(s).
  grunt.registerTask('default', ['connect']);    
};

我的 Procfile 看起来像这样:

web: grunt

我的 package.json 看起来像这样:

{
    "name": "herokoloco",
    "version": "0.1.1",
    "scripts": {
        "postinstall": "bower install"
    },
    "dependencies": {
        "grunt": "^0.4.5",
        "grunt-cli": "^0.1.13", 
        "grunt-contrib-connect": "^0.8.0",
        "bower": "~1.3.9"
    },
    "engines": {
        "node": "0.10.x"
    }
}

我的文件结构如下:

> node_modules
v www
    index.html
bower.json
Gruntfile.js
package.json
Procfile

它使用 Heroku 的“工头启动网络”在本地完美运行,但不适用于 Heroku。我的日志中出现了这个错误:

2014-10-08T21:19:23.620448+00:00 heroku[路由器]: at=error code=H14 desc="没有运行网络进程" method=GET path="/" 主机=屏蔽水域-3266.herokuapp.com request_id=4d669be2-a362-4968-8349-b83b8ad0e2f6 fwd="198.245.95.126" dyno=连接=服务=状态=503字节=

【问题讨论】:

    标签: node.js heroku gruntjs


    【解决方案1】:

    一旦我真正设置了一些测功机,它就起作用了。为此,我从 Heroku 项目内部的终端发出了以下命令:

    heroku ps:scale web=1
    

    【讨论】:

    【解决方案2】:

    您可以让 Heroku 在完成安装后运行任何您想要的命令,方法是在您的 Procfile 中设置启动服务器的命令。所以,类似:

    web: ./node_modules/grunt/.bin/grunt my-grunt-command ; node app.js
    

    应该可以。

    【讨论】:

    • 完全理解你,但我试过了,但没有成功。我不想要的是使用nodejs服务器,我想在Procfile中的web任务上运行grunt connect,但它根本没有用。
    • 要完成这项工作,您可能需要获取 PORT 环境变量并弄清楚如何将其作为选项添加到 grunt-contrib-connect。
    • 我已经这样做了,在 grunt-contrib-connect 选项上我已经输入了 port: process.env.PORT || 3000,并且在 Heroku 日志中说 Heroku 分配的端口,但仍然没有工作。
    • kevinwolf,我相信 grunt 选项是 JSON,而不是可执行的 Javascript,所以这不起作用。你为什么不发布你的 grunt 配置以获得更多反馈。
    【解决方案3】:

    确保你的包配置中列出了所有的 grunt 依赖项(包括grunt-cli),确保你删除了连接配置的hostname 部分并使用进程端口。即“端口:process.env .PORT || 5000" 在您的连接配置中。这对我有用。

    【讨论】:

      猜你喜欢
      • 2015-04-02
      • 2015-10-18
      • 2015-06-21
      • 2013-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-12
      • 2013-12-18
      相关资源
      最近更新 更多