Update node js packages on heroku - node.js

How can I tell Heroku to update my node modules?
I tried to do
heroku run bash
npm update <package>
and then restarted my heroku app
heroku restart -a <appname>
But I can't see the changes, I inserted same commands locally and it worked. Ideas?

try to :
heroku config:set NODE_MODULES_CACHE=false
git commit -am 'rebuild' --allow-empty
git push heroku master

Related

Heroku applications and building process

I have just one question:
Why when you push to heroku, it do same all tasks to execute app?
For example I just modified one file index.js, ok, I need to git add index.js, git commit -am "Message" and heroku push origin master, but when I'm pushing to heroku, it pushing one file but do a lot of unnecessary things like
Again installing Node
Again installing dependencies (node modules), there are the same but heroku again download all dependencies
Again build cache of node modules
Why Heroku can't analyze package.json and do not install again new modules? Why it installs again Node if in Procfile I have the same web: npm run server? These actions are eating a lot of time and resources, I'm don't understand that.
you can create a ci/cd pipeline and deploy directly from your github page

How to clean cache in heroku after installing dependencies?

Topic : Heroku
Problem : After installing my node js application in heroku, I made some changes in package.json. Now, when I am trying to push changes again, new dependencies are not getting installed. Heroku is picking the dependencies from cache.
How to disable cache in heroku ?
Thanks all for responding.
After much googling and spending time on my issue, I was able to solve my problem.
I thought it would be better to post an answer if anyone faces the similar dilemma.
Below is the documentation, where I found my answer https://devcenter.heroku.com/articles/nodejs-support
By default, in heroku production is set to true. That's why only dependencies get installed. ( & skips devDependencies )
heroku config:set NPM_CONFIG_PRODUCTION=false
Set production to false, to force heroku to install all packages.
** Only do this if doing development.
Heroku, by default, caches all the dependencies, so that the deployment is faster.
heroku config:set NODE_MODULES_CACHE=false
$ git commit -am 'disable node_modules cache' --allow-empty
$ git push heroku master
** Preferable only if new dependencies are added in package.json
I'm aware of answering this question now is too late but no wonder someone will need to solve this issue at anytime...
Anyways, you can clear the build cache of an app easily by installing heroku-builds plugin.
Installation:
heroku plugins:install heroku-builds
Usage:
heroku builds:cache:purge -a your-app-name
Note:
The cache will be rebuilt on the next deployment. If you do not have any new code to deploy, you can push an empty commit.
$ git commit --allow-empty -m "Purge cache"
$ git push heroku master

Why does Heroku fail to detect Node.js buildpack?

I git cloned a Node.js application (the version specified in the package.json being 4.1.2 and that of my local machine being 6.2.2) and tried to git push on Heroku. But it failed to build and gave this error:
Failed to detect set buildpack https://codon-buildpacks.s3.amazonaws&period;com/buildpacks/heroku/nodejs.tgz
Now I set the buildpack to heroku/nodejs and I get this message:
Buildpack set. Next release on lit-badlands-92088 will use heroku/nodejs.
Run git push heroku master to create a new release using this buildpack.
Now when I run git push heroku master, I am again told:
remote: -----> Failed to detect set buildpack
https://codon-buildpacks.s3.amazonaws.com/buildpacks/heroku/nodejs.tgz
remote: More info:
https://devcenter.heroku.com/articles/buildpacks#detection-failure
remote:
remote: ! Push failed
remote: Verifying deploy...
remote:
remote: ! Push rejected to lit-badlands-92088.
What could be the possible reasons for the Node.js buildpack not being detected even if I set it?
This means that a package.json file isn't checked into the root of your git project, so Heroku is detecting that it isn't a Node.js app. You can see this locally:
git show master:package.json
To fix it, you'll want to be sure there is a package.json in the root of your project (where there is also a .git directory), and add it to git:
git add package.json
git commit -m 'track package.json'
The phrasing ('failed to detect set buildpack') could be improved. It should probably say 'failed to detect Node.js app'. When the buildpack's "detect" script is run (https://github.com/heroku/heroku-buildpack-nodejs/blob/master/bin/detect), it looks for a package.json file to verify that there's a node app available to build.
It’s because Heroku thinks you are deploying a Node app. But what you are deploying is the public directory of a Node app, not Node code.
Heroku uses buildpacks to select how the app is handled. You want to clear that Node association:
heroku buildpacks:clear # clear all buildpacks set on the app
Which means that “Next release will detect buildpack normally.”, that should solve it for you.
ref: https://devcenter.heroku.com/articles/buildpacks
I had similar issue, here are the steps which solved the problem.
heroku buildpacks:set heroku/nodejs
git push heroku master
Basically details are in the more info link -
This situation may also occur if you remove or rename a file that previously led to the automatic detection of your application type and thus the automatic setting of the detected buildpack on your application.
If you are working on a branch, you need to set master to track your branch
git branch -f --track master origin/branch_name
Check for package.json in master
git show master:package.json
If it's available, trying pushing again.
git push heroku master
`
Some tiny clarifications on other answers:
The error "Failed to detect set buildpack https://codon-buildpacks.s3.amazonaws&period;com/buildpacks/heroku/nodejs.tgz" or anything similar, means to say the GIT COMMIT you are trying to push to heroku was not DETECTED as a node.js app. (Note the capitals for subtleties).
I recently made a stupid mistake that made me aware of this: Running "ls -a" showed that my package.json and .git files were in the same root directory, as required by heroku. EXCEPT that the package.json file WAS NOT included in my latest git commit. Running "git status" alerted me that package.json was an untracked file. So I added it, and ta-da, pushing to heroku worked.
If you get an error related to buildpack, check that your GIT COMMIT has a package.json file in the root directory. If this is true, try manually specifying the buildpack with "heroku buildpacks:set heroku/nodejs" (or your desired language). This should resolve most errors related to buildpack detection.
Most apps have at least one of these signatures present, so if you see this error, it usually means an important file isn't checked into your git repository:
Java: pom.xml
Ruby: Gemfile
Node.js: package.json
Python: requirements.txt / setup.py / Pipfile
PHP: composer.json / index.php
You should:
git add {file}
git commit -am 'added {file}
git push heroku master
I run into the same issue and tried everything, eventually realized no file would commit because they were already committed and pushed to the github repository.
So you need to do the following:
Remove old git. folder:
rm -rf .git
Create new git:
git init
Add all project files:
git add .
Commit:
git commit -m “commit name”
Creat new heroku application:
heroku create
Push code to master:
git push heroku master
This worked for me.
I add Pakage.json file, and then
Remove old git. folder:
rm -rf .git
Create new git:
git init
Add all project files:
git add .
Commit:
git commit -m “commit name”
Creat new heroku application:
heroku create
Push code to master:
git push heroku master
App successfully deployed on heroku.

Missing steps in heroku app renaming

I am on the heroku documentation. I am pushing my node app to heroku and it was working fine but I need to change the website name. https://devcenter.heroku.com/articles/renaming-apps
It shows me that I can rename my app very simply
heroku apps:rename newname
Step 2: I just change it on git and I was good to go on the heroku site.
git remote rm heroku
heroku git:remote -a newname
I did the next steps for git and received
! `git:` is not a heroku command.
a app not found when I tried to push to the the heroku master. Is there another step that I am missing?
Maybe you have an older version of the heroku client installed. What do you get when you run heroku version? The heroku git:remote -a command works with the latest version:
$ heroku version
heroku-toolbelt/3.37.2 (x86_64-darwin10.8.0) ruby/1.9.3
heroku-cli/4.19.28-8f2bd89 (amd64-darwin) go1.4.2
If you are seeing an older version run heroku update and try again.

Heroku "npm install jugglingdb mongoose" Already did

I am trying Heroku, but i have run into a problem.
I deployed the Node.js app, but it crashed, I then tested it localy and find out that it was because it did not have run the command "npm install jugglingdb mongoose".
I did that and then it worked locally, then i tried
git add .
and
git commit -m 'db'
but then I get the message:
nothing to commit (working directory clean)
Then I think, "Okay, then i try to commit that to heroku, now it works on my local computer"
git push heroku master
But i just get
Everything up-to-date
Then i try restarting it and try my app again
heroku restart
But the logs says again = npm install jugglingdb mongoose
What could be the problem? I have also tried npm update and it did not update anything.
Ensure that your 'node_modules' directory isn't empty and your modules are installed inside your local project instead of the default NPM root:
npm update --binroot

Resources