如何在Heroku上运行`grunt connect`进程

时间:2013-05-08 06:26:09

标签: node.js heroku gruntjs

我想知道是否可以运行 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的“foreman start web”在本地完美运行,但在Heroku上不起作用。我刚在日志中收到此错误:

  

2014-10-08T21:19:23.620448 + 00:00 heroku [router]:at = error code = H14   desc =“没有正在运行的Web进程”方法= GET path =“/”   主机= shielded-waters-3266.herokuapp.com   request_id = 4d669be2-a362-4968-8349-b83b8ad0e2f6 fwd =“198.245.95.126”   dyno = connect = service = status = 503 bytes =

3 个答案:

答案 0 :(得分:1)

一旦我确实设置了一些dynos,它就起作用了。为此,我从Heroku项目的终端发出了以下命令:

heroku ps:scale web=1

答案 1 :(得分:0)

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

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

应该有用。

答案 2 :(得分:0)

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