我将我的节点应用程序部署到Heroku,并尝试使用nodemon而不是我定义的node app.js
来调用它。我的Procfile如下所示:
web: npm start
当我推送到heroku时,dyno因此错误而崩溃:
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"
}
}
更新
很抱歉让所有人都挂了!如果我没记错的话,我的问题到底是我的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
答案 0 :(得分:9)
将您的Procfile
更改为:
web: node app.js
将app.js
作为您应用的入口点。
这假设您在应用中确实不需要nodemon
,因为您已在所提供的package.json
示例中列出了它。
答案 1 :(得分:1)
我知道OP得到了答案,但我想我可能会分享一些对我有用的东西,在稍微不同的情况下:
Procfile包含以下内容:
web: npm start
对于我的package.json文件,我定义了:
"scripts":{
"start": "node ./bin/www"
}
这为我解决了这个问题。
答案 2 :(得分:0)
最近,我正在通过使用nodemon在heroku中部署我的node js应用程序,因为它工作正常。 我们必须采取一些步骤来重新找到未发现的nodemon。
1)Package.json
npm start: nodemon server.js
2)我们需要像下面这样修改procfile。
web: nodemon server.js
3)使用以下命令行登录heroku
$ heroku login
4)创建新应用程序
$heroku create <appication-name>
我认为大多数开发人员都是通过github ID直接部署到heroku的。在本地将node_modules正常工作之后,将您的应用程序部署到heroku中(在内部我们无法访问node_modules),因此可以访问存储库。
5)从heroku克隆存储库
$ heroku git:clone -a <application-name>
$ cd cv-application
现在我们可以访问该应用程序了。
6)删除您的node_modules,并尝试使用以下命令安装软件包。
$ npm install.
部署您的更改。
$ git add .
$ git commit -am "make it better"
$ git push heroku master.
npm版本应为6.4.1。
答案 3 :(得分:0)
将nodemon作为开发依赖项而不是依赖项。
使用此命令删除nodemon。
npm uninstall nodemon
现在安装nodemon
npm install -D nodemon
在生产或部署中,您不应该使用nodemon。