Heroku无法启动我的节点应用程序,因为它试图用nodemon来完成它
我正在部署我的节点应用程序到Heroku,它试图用nodemon而不是我定义的node app.js
调用它。 我的Procfile如下所示:
web: npm start
而当我推到heroku测功机崩溃与此错误:
2014-03-24T19:24:59.669412+00:00 app[web.1]: > my-app@0.0.1 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" } }
更新
对不起,让所有这些人都挂了! 如果我没有记错的话,最后我的问题是我的构build包在我的Procfile中覆盖了web:angular色。
我已经切换到不同的buildpack,即:ddollar / heroku-buildpack-multi
使用以下.buildpacks文件:
ryandotsmith/nginx-buildpack heroku/heroku-buildpack-nodejs
我的Procfile看起来像这样:
web: bin/start-nginx ./node_modules/.bin/forever --minUptime 10000 --spinSleepTime 1000 app.js
改变你的Procfile
到这个:
web: node app.js
作为app.js
的入口点到您的应用程序。
假设你在你的应用中并不需要nodemon
,因为你已经在你提供的package.json
示例中列出了它。
我知道OP得到了答案,但我想我可能会分享什么对我有用,在一个稍微不同的senario:
Procfile包含以下内容:
web: npm start
对于我定义的package.json文件:
"scripts":{ "start": "node ./bin/www" }
这就解决了这个问题。