In the Procfile, worker: node bot.js works fine, but if I move the file in a folder, then how would I format it? I would think something like worker: node folder/bot.js but I don't know. Thanks to anyone who responds.
You can do
worker: node folder/bot.js
or
worker: cd folder && node bot.js
In some cases it does make a difference how you are calling it but it depends on your program.
Related
I always create a file called server.js as entry point of my Node.js app and I always deploy to Heroku with that file but... How does Heroku know that server.js the file that it should to execute?
What if my server file is called anotherName.js? How can I tell to Heroku to deploy anotherName.js?
If you have a Procfile, Heroku will look there first.
If no Procfile exists, Heroku will try to run the start sript defined in your package.json.
What if my server file is called anotherName.js? How can I tell to Heroku to deploy anotherName.js?
Either by modifying (or creating) your Procfile or by changing the start script in your package.json.
I have 2 discord bot programs, one is python code and the other is nodejs. I was wondering if in the procfile, like when you say worker: python ___, is there a way so that it runs both my python file and codejs file at the same time? Right now I can only get either or to run.
My procfile right now is just:
worker: python log.py
worker: node bot.js
Thank you for helping.
Instead of your Procfile being:
worker: python log.py
worker: node bot.js
You do:
worker: python log.py & node bot.js & wait -n
see: https://help.heroku.com/CTFS2TJK/how-do-i-run-multiple-processes-on-a-dyno
I am trying to host a discord bot on Heroku (Discord JDA, Maven). I do this by connecting to Github and then deploying. The bot 'deploys' (view attachment) but doesn't actually work (view attachment).
What could I be doing wrong, or has anyone else come across a similar issue?
Quick and dirty way to deploy it:
You'll need to setup a Procfile, extensive info on that right here: https://devcenter.heroku.com/articles/procfile
The procfile is basically a file with no extension that tells the dyno how to execute your program.
A simple
worker: java $JAVA_OPTS -jar <PATH_TO_JAR>
will work fine if you don't need more config, refer to that link for more.
You can then deploy it like this (Good to have procfile and jar on the same directory):
$ heroku deploy:jar -a <YOUR_HEROKU_APP_NAME> --jdk <JDK_VERSION> --jar <PATH_TO_JAR> -i Procfile
Then to start it just do (Assuming you want a worker dyno, which is what discord should need)
$ heroku ps:scale -a <YOUR_HEROKU_APP_NAME> worker=1
Then stop it with:
$ heroku ps:scale -a <YOUR_HEROKU_APP_NAME> worker=0
I've found this is much simpler than using git, especially if you're doing tests or simple/quick stuff.
Possible solutions:
Set up a Procfile. A Procfile basically tells Heroku what command to run when your app is deployed. Inside the Procfile, write worker: node index.js. Also, make sure Procfile has a capital "P".
Set up package.json.
npm init
Then just skip through the set up and your file should be automatically created. IMPORTANT. In your package.json file, add your node and npm versions.
node -v
npm -v
Then go an type this in your package.json.
"engines": {
node: "your-version-here"
npm: "your-version-here"
}
Then try deploying your app to Heroku again. Also, make sure you have the "nodejs" buildpack set up for your app. Run it and test the discord bot.
I have a node.js/express app, I would like to run the command gulp build to generate my static assets when deploying with heroku, just before my node command lcm server, as I keep my public folder in my .gitignore file.
I'm having trouble finding how I can run this command during my heroku deployment.
So far my Procfile is:
web: lcm server
This doesn't seem to work -
gulp build
web: lcm server
Make a Procfile
Begin by making a blank file named Procfile and placing it within the root of your project. Procfile is short for “Process File” and used to explicitly declare what command should be executed to start your app. By default, a Procfile is not required, but it’s good form for Node-based projects to create one.
If a Procfile isn’t defined, then one will be created automatically using npm start as the web process type.
Possible solution
Try this one:
web: node node_modules/gulp/bin/gulp build
The line above lets us use the locally installed version of Gulp provided by Node’s Package Manager (NPM) instead of having to use a globally installed version.
Helpful resources
from https://www.sitepoint.com/deploying-heroku-using-gulp-node-git/
I have seen very similar posts, that however did not help me to find a solution to my problem.
I am following step by step the guide to upload a project on heroku.
However when I type the command:
ps:scale web=1
The result is:
no such process type web defined in Procfile
I have created a file "Procfile" being careful at the capitalization. but nothing.
What else can I do to solve this problem??
Thanks in advance.
Follow on this heroku procfile
:
We have to define web process type in your Procfile and make sure name Procfile exactly, and not anything else. For example, Procfile.txt is not valid.
Example:
a: Python:
web: gunicorn gettingstarted.wsgi --log-file -
b: String MVC Hibernate
web: java $JAVA_OPTS -jar target/dependency/jetty-runner.jar --port $PORT target/*.war
This declares a single process type, web, and the command needed to run it. The name web is important here. It declares that this process type will be attached to the HTTP routing stack of Heroku, and receive web traffic when deployed.
Procfiles can contain additional process types.
worker: bundle exec rake jobs:work
Hopefully you've fixed your problem after all this time, but just in case you haven't...
I've run into this problem when my Procfile doesn't exist (a web app that I'm porting to Heroku) or doesn't match the dyno type that I'm trying to deploy (see Heroku No such process type web defined in procfile for an example of that).
You've created your Procfile, but what did you put in there? For a website Node.js app, you'll need to put in:
web: node app.js
(Obviously you'll replace app.js with index.js or wherever your app starts)
For more about Procfiles (or for other languages than Node.js), see https://devcenter.heroku.com/articles/procfile