Run nodejs app on start Windows - node.js

I have a nodejs app which should start running when windows starts. As I'm new to node and have never done anything similar I don't know how to do it. I have been reading some articles from several webs that use AdvancedInstaller or other software but don't know if there are any ways to do it without using other software. Anyone can help?

You need to use pm2
There are other packages aimed at making pm2 a windows service:
pm2-windows-startup
pm2-windows-service

It seems like you need to create *.sh script and put in the Startup folder
maybe this can help you
or just google sh script startup nodejs windows

Related

How to run React Web Application forever

I have created a web application using React framework. I am able to Run it in localhost using npm start command.
I have a server in AWS ubuntu 14.04. I have uploaded all code there and run the application using npm command. It is working well. But if i close the terminal then it has been stopped. I know we need to run that instance or service. But how can we do it forever without any UI of ubuntu?
Did you link the public directory's file(HTMl/PHP file) to your dedicated host server?
If not, Look to do how to setup it with AWS in local you can do it with virtual hosting. I'm sure in AWS there'll be any same way to do.
You can use a library called forever which will keep the process running in the background.
https://github.com/foreverjs/forever

What to put for NPM scripts when developers are on multiple systems?

I have a web app project, and it uses Mongo, so one of my NPM scripts is "start-mongo-dev": "mongod", for spinning up the Mongo daemon during development.
I used to use OSX, but just got a new computer and run Linux Ubuntu. Now the command to begin the daemon is sudo service mongod start, so it would seem I should change the NPM script to that.
But that is a red flag. What if I go back to the old computer at all? What if I collaborate on this project with someone who uses OSX?
In short, how is one expected to handle developing with multiple OS's?
Ian's solution may be better but one alternative would be to create a bash script inside your project that detects the OS and runs the appropriate command. You can find more info on how to do that here How to detect the OS from a Bash script?
In some packages, I see divisions like this indicated with a :. For example:
"scripts": {
"start-mongo-dev:osx": "mongod",
"start-mongo-dev:ubuntu": "sudo service mongod start"
}
I am not aware of a canonical solution, but that doesn't mean there isn't one. I happen to like this one, though. #opinion

nodejs app with forever in cronjob does not work after reboot

I created a cronjob with sudo crontab -u USERNAME -e and tried to start my node.js app after each reboot.
It had worked well at another server.
But this time, I installed the Node.js via nvm
Then tried to run the same cronjob lines, but every time after reboot it failed. I tried to figure out all the related folders and tried again to run as different lines. When I check with forever list, server shows that no process is running.
#reboot /home/USERNAME/.npm/forever start -c /home/USERNAME/.nvm/current/bin/node /home/USERNAME/APPNAME/app
#reboot /home/USERNAME/.npm/forever start /home/USERNAME/APPNAME/app
#reboot /usr/local/bin/forever start -c /home/USERNAME/.nvm/current/bin/node /home/USERNAME/APPNAME/app
I think that the reason is somehow related with nvm. But I am not sure of that. I don't want to do anything unnecessary unless I am fully sure about it.
Edited July 26, 2015
Though I have used the npm's forever module to deploy nodejs production apps, I really do not see the need to use it on linux based servers as there are so many system level alternatives available.
One of them is upstart. It will help you run your scripts as system level services. Amazon Web Services also use upstart in their Elastic Beanstalk nodejs tiers to keep nodejs apps running forever.
If you really just need to get down to it, here is a link to run your nodejs app as an upstart service.
However, it is not limited to deploying nodejs apps only and if you learn upstart, you will be able to do a lot of things with it. Here is a link for that as well.
If your original approach was preferable (as it was in my case) you can fix your scheduled cron job by explicitly passing the path to node like this: (found in this answer)
#reboot /root/.nvm/versions/node/v7.1.0/bin/node /root/.nvm/versions/node/v7.1.0/bin/forever start /var/www/server.json
Apparently NVM works in magic by setting up some system paths which aren't setup at the moment the cron jobs run.

is it possible to learn node.js without access to cmd.exe?

My company has locked down access to CMD.EXE (not sure why)..
I am futtzing around with Node.JS, installed it via the official Windows installer but found I have 0 access to cmd.exe and now I am wondering if I can even go about learning it with the Node terminal only?
Simple things like node -v do not work in the terminal. You have to actually do process.version.
I want to install express as another example and it does not work either.
npm install -g express-generator
Is there another keyword to use in place of npm when using Node.js Terminal?
Also when the Node.js terminal stops at ... is Ctrl-D the only option to break?
They allow you to run installers, but block access to cmd.exe? That is odd, but there are some more options.
Have you tried Powershell? If cmd.exe is blocked, they might have also blocked Powershell.
Install a third party console. Something like:
console
ConEmu
PowerCmd
Use an IDE with built in support like WebMatrix
Install Node on a remote server that you can SSH into (using Putty or similar tools).
Free AWS Micro Instance
$150 / month free on Azure if you can qualify as a startup.
Cheap hosting with Digital Ocean
Free VPS with 5Jelly (Never used them, can't vouch for quality)
Ask your tech department for access (should probably be #1 :)
When you just double-click on or execute just "node.exe" at a command prompt, you get the REPL, which is an environment that allows you to execute javascript code. It's not a regular command prompt.

How can I run a node.js server

I'm new to node and have many things unclear.
Like, for php, I just need a index.php file on server's root dir and it can work by itself.
However, for a node.js file, we need to "node" command it in terminal right?
So what if we close that terminal? How can I keep it running to accept my requests?
You are correct in saying that the 'node' command will start a node process with whatever script you supply to it.
As far as keeping it running, there are several ways to do it. There are plenty of CLI libraries that will help you. For example, this one is called Forever
If you are using linux, you can simply run the node process as a background task:
node server.js &
To run node without terminal, you might want to check out one of these modules depending on your platform:
node-mac
node-windows
node-linux

Resources