2014-03-24 23 views
6

我正在將我的節點應用程序部署到Heroku,它試圖用nodemon調用它,而不是我已經定義的node app.js。我Procfile看起來是這樣的:Heroku無法啓動我的節點應用程序,因爲它試圖使用nodemon來執行它

web: npm start 

當我推這個錯誤的Heroku到了極致崩潰:

2014-03-24T19:24:59.669412+00:00 app[web.1]: > [email protected] start /app 
2014-03-24T19:24:59.669412+00:00 app[web.1]: > nodemon app.js 
2014-03-24T19:24:59.669412+00:00 app[web.1]: 
2014-03-24T19:24:59.669412+00:00 app[web.1]: 
2014-03-24T19:24:59.710228+00:00 app[web.1]: 
2014-03-24T19:24:59.701246+00:00 app[web.1]: sh: nodemon: not found 

我甚至嘗試NPM安裝nodemon作爲的package.json依賴,並在node_modules檢查/ nodemon,但沒有運氣。 (nodemon需要與npm install nodemon -g一起安裝才能正常工作)

任何想法?

我的package.json:

{ 
    "name": "my-app", 
    "version": "0.0.1", 
    "private": true, 
    "main": "app.js", 
    "scripts": { 
     "start": "node app.js" 
    }, 
    "dependencies": { 
     "requirejs": "~2.1.10", 
     "underscore": "~1.5.2", 
     "express": "~3.4.8", 
     "ejs": "~0.8.5", 
     "less-middleware": "~0.1.15", 
     "socket.io": "~0.9.16", 
     "tail": "~0.3.5", 
     "async": "~0.2.10", 
     "mongoose": "~3.8.5", 
     "mkdirp": "~0.3.5", 
     "ejs-locals": "~1.0.2", 
     "aws-sdk": "~2.0.0-rc8", 
     "knox": "~0.8.8", 
     "connect-multiparty": "~1.0.3", 
     "uuid": "~1.4.1", 
     "nodemon": "~1.0.14" 
    }, 
    "devDependencies": { 
     "grunt": "~0.4.2", 
     "grunt-contrib-clean": "~0.5.0", 
     "grunt-contrib-copy": "~0.4.1", 
     "grunt-contrib-requirejs": "~0.4.1", 
     "grunt-recess": "~0.5.0", 
     "grunt-contrib-cssmin": "~0.7.0", 
     "grunt-mocha-test": "~0.9.0", 
     "grunt-forever": "~0.4.1", 
     "matchdep": "~0.3.0", 
     "jshint": "~2.4.3", 
     "precommit-hook": "~0.3.10", 
     "mocha": "~1.17.1", 
     "supertest": "~0.9.0", 
     "chai": "~1.9.0", 
     "sinon": "~1.8.2", 
     "karma-sinon": "~1.0.2", 
     "karma-script-launcher": "~0.1.0", 
     "karma-chrome-launcher": "~0.1.2", 
     "karma-firefox-launcher": "~0.1.3", 
     "karma-requirejs": "~0.2.1", 
     "karma-html2js-preprocessor": "~0.1.0", 
     "karma-jasmine": "~0.1.5", 
     "karma-coffee-preprocessor": "~0.1.3", 
     "karma-phantomjs-launcher": "~0.1.2", 
     "karma": "~0.10.9", 
     "karma-mocha": "~0.1.1", 
     "grunt-karma": "~0.6.2", 
     "karma-chai": "~0.1.0" 
    }, 
    "config": { 
     "precommit": { 
      "lint": true 
     } 
    }, 
    "engines": { 
     "node": "0.10.x" 
    } 
} 

更新

對不起,讓大家留下掛這麼長的時間!如果我沒有記錯,最後我的問題是我的buildpack在我的Procfile中覆蓋了web:角色。

因爲我已經切換到不同的buildpacks,即: ddollar/Heroku的-buildpack的多

用下面.buildpacks文件:

ryandotsmith/nginx-buildpack 
heroku/heroku-buildpack-nodejs 

而且我Procfile看起來是這樣的:

web: bin/start-nginx ./node_modules/.bin/forever --minUptime 10000 --spinSleepTime 1000 app.js 

回答

9

更改Procfile這樣:

web: node app.js 

正在app.js作爲您的應用的入口點。

這是假設你真的不需要nodemon在你的應用程序,因爲你已經在你提供的樣本package.json上列出它。

+0

完成,沒有運氣。我已經從package.json中刪除了腳本和nodemon dep,並且我的Procfile是這樣的:'''web:node app.js'''還有一點是當我heroku ps我得到這個: ''= == web(1X):'npm start' web.1:crashed 2014/03/24 16:18:05(~1m前)''' 我沒有提到npm start或nodemon。它來自哪裏? –

+0

掛上我已經知道我一直在做錯了什麼,它與heroku沒有任何關係。感謝您的幫助! –

+0

偉大你找出問題! :D別擔心,很高興。 – diosney

0

我知道OP得到了答案,但我想我可能會分享工作對我來說,在一個稍微不同的塞納里奧:

Procfile包含以下內容:

web: npm start 

而對於我的package.json我定義的文件:

"scripts":{ 
    "start": "node ./bin/www" 
} 

而且這個問題已經解決了我的問題。

+0

這是否會自動重啓應用程序,如果它崩潰,它肯定看起來不像它 –

相關問題