nodemon command not recognized by terminal - javascript

I am trying to automate the server reload using the nodemon. I have it installed locally and have the start set to
nodemon app.js using the code:
"scripts": {
"start": "nodemon app.js"
}
It ran fine for the first time, but after shutting down the system once and reopening my project, it does not seem to run properly anymore. Now it throws an error every time I use the command nodemon app.js.
The error line is:
nodemon : The term 'nodemon' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.

The best solution I could go about this is:
npm install -D nodemon // install as a dev dependency
npm start // run script start

Related

Creating directory on root doesn't work via npm but does running node directly

app.js (root is not file owner)
var fs = require('fs');
fs.mkdirSync('/root/tmp');
package.json
{
"scripts": {
"app": "node app.js"
}
}
When I run as root npm run app I got
> app
> node app.js
node:internal/fs/utils:344
throw err;
^
Error: EACCES: permission denied, mkdir '/root/tmp'
But it works when I run just node app.js. Which setting/option of npm can help me run npm run app without errors?
Why npm run change user? How to force npm not to change user?
I can replicate the behavior you see on Linux if I run the commands in a shell I've run via sudo, like this: sudo bash. As in the question, npm run app fails but node app.js works.
The difference is that npm run app runs the executable JavaScript file npm-cli.js from the npm package, which looks like this:
#!/usr/bin/env node
require('../lib/cli.js')(process)
That tells us it's running node via env.
So I got to thinking: What user does that run as? So I added "who": "whoami" to package.json and did npm run who. The answer is: It runs as my normal account, not as root, even when I run that from a shell I've launched via sudo bash. My normal user account can't (of course) create subdirectories of root.

can not run js file with nodemon

I install nodemon from npm in project but cant run js file with 'nodemon run start' and facing this error:
nodemon : The term 'nodemon' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
You need to install nodemon globally using the -g option.
npm install -g nodemon
This will add nodemon to your PATH environment variable so that your terminal knows where the executable file for nodemon is.
Otherwise your terminal doesn't know which executable you're trying to run.
Your second option is to run it through npx.
Use the following:
npx nodemon {filename}
npm will handle locating and running the executable for you. The npx command is installed on your computer by default when you install npm.
You will need to install nodemon if you haven't already
for dev environment run
$ npm install --save-dev
to install nodemon globally run
npm install -g nodemon
to run your app/server use
nodemon app
If the name of your entry file is not app use its name in the command
nodemon {filename}

nodemon command is not recognized in terminal for node js server

I am doing node.js server setup from https://scotch.io/tutorials/authenticate-a-node-js-api-with-json-web-tokens. I am new in node.js. I am installing npm install nodemon --save. But when I am run the server with this nodemon server.js.
In the terminal showing:
nodemon is not recognized as internal or external command, operable
program or batch file
node server.js command is working and started the server, But nodemon command is not working.
I am set up the node js server from https://scotch.io/tutorials/authenticate-a-node-js-api-with-json-web-tokens video.
I don't know why it is not working I have tried some command for the install nodemon.
npm install -g nodemon
npm install -g nodemon --save
npm install --save-dev nodemon
npm install -g nodemon#debug
npm install -g --force nodemon
I have seen one link I can´t install nodemon globally, "nodemon" not recognized, But I don't know how to set the path because of my project location in D drive.
I want to run nodemon server.js. How can this be done?
You need to install it globally
npm install -g nodemon
# or if using yarn
yarn global add nodemon
And then it will be available on the path (I see now that you have tried this and it didn't work, your path may be messed up)
If you want to use the locally installed version, rather than installing globally then you can create a script in your package.json
"scripts": {
"serve": "nodemon server.js"
},
and then use
npm run serve
optionally if using yarn
# without adding serve in package.json
yarn run nodemon server.js
# with serve script in package.json
yarn run serve
npm will then look in your local node_modules folder before looking for the command in your global modules
Install nodemon globally:
C:\>npm install -g nodemon
Get prefix:
C:\>npm config get prefix
You will get output like following in your console:
C:\Users\Family\.node_modules_global
Copy it.
Set Path.
Go to Advance System Settings → Environment Variable → Click New (Under User Variables) → Pop up form will be displayed → Pass the following values:
variable name = path,
variable value = Copy output from your console
Now Run Nodemon:
C:\>nodemon .
No need to install nodemon globally. Just run this npx nodemon <scriptname.js>. That's it.
First, write npm install --save nodemon
then in package.json write the followings
"scripts": {
"server": "nodemon server.js"
},
then write
npm run server
I was facing the same issue. I had installed nodemon as a dev-dependency and when I tried to start the server it gave the message that
nodemon is not recognized as internal or external command, operable
program or batch file
Then I installed it globally and tried to start the server and it worked!
npm install -g nodemon
To use nodemon you must install it globally.
For Windows
npm i -g nodemon
For Mac
sudo npm i -g nodemon
If you don't want to install it globally you can install it locally in your project folder by running command npm i nodemon . It will give error something like this if run locally:
nodemon : The term 'nodemon' is not recognized as the name of a
cmdlet, function, script file, or operable program. Check the spelling
of the name, or if a path was included, verify that the path is
correct and try again.
To remove this error open package.json file and add
"scripts": {
"server": "nodemon server.js"
},
and after that just run command
npm run server
and your nodemon will start working properly.
This may come to late, But better to say somthing :)
If you don't want to install nodemon globbaly you can use npx, it installs the package at run-time and will behave as global package (keep in mind that it's just available at the moment and does not exist globally!).
So all you need is npx nodemon server.js.
npx can be used out of the box from npm#5.2.0 version and up.
I had the same error a few minutes ago and this is how I've solved it:
1. Install "nodemon" Globally
npm install nodemon -g
2. Then you need to add the npm path to the environment variables
To find the path do this in the terminal:
npm config get prefix
You'll get the output that looks like this: C:\Users\user\AppData\Roaming\npm
If you're not sure about how you can update environment variables on Windows, check this out: Here
3. Run the app again with "nodemon"
Before you run the app, create a new terminal to make sure that the terminal recognises the changes in the environment variables.
Then run:
ex:
nodemon server.js
Does it need to be installed globally? Do you need to be able to just run nodemon server.js ? If not, you could always just call it from your local project directory. Should be here:
node_modules/.bin/nodemon
This line solved my problem in CMD:
npm install --save-dev nodemon
I tried installing the nodemon globally but that doesn't worked for me.
whenever i try to run it always shows me the error:
nodemon : The term 'nodemon' is not recognized as the name of a
cmdlet, function, script file, or operable program. Check the spelling
of the name, or if a path was included, verify that the path is
correct and try again.
2. I have found two solutions for this
solution 1:
What i have tried is to update the "scripts" in package.json file and there i have added
"server": "nodemon app.js"
above line of code and after that
npm run server
Soluton 2:
Press the Windows key.
Type "Path" in the search box and select "Edit the system environment variables"
Click on "Environment Variables" near the bottom.
In the "System Variables" section double click on the "Path" variable.
Click "New" on the right-hand side.
Copy and paste this into the box (replace [Username]):
C:\Users[Username]\AppData\Roaming\npm
restart your terminal and VSCode.
Then type nodemon app.js to run the nodemon
i applied solution 2 as we just need to run nodemon [filename.js]
I have fixed in this way
uninstall existing local nodemon
npm uninstall nodemon
install it again globally.
npm i -g nodemon
It is better to install nodemon globally instead as dev dependency to the project.
npm install -g nodemon
Official NPM CDN: Link
This package is used to monitor changes in the javascript files and re run the npm start so that it is easy to dev purposes.
Since node prefix is not in the PATH ENV variable , any of the globally installed modules are not getting recognized.
Please try this.
Open cmd prompt
npm config get prefix
append the resulting path to PATH env variable.
Now you should be able to run nodemon from any location.
try this link and follow it.fixing npm permissions
https://docs.npmjs.com/getting-started/fixing-npm-permissions#option-2-change-npms-default-directory-to-another-directory
You can run your node app by simply typing nodemon
It First run index.js
You can put your entry point in that file easily.
If you have not installed nodemon then you first you have to install it by
npm install -g nodemon
If you got any permission error then use
sudo npm install -g nodemon
You can check nodemon exists or not by
nodemon -v
For me setting the path variables was enough for the solution:
Step 1) Install nodemon globally using npm install -g nodemon
Step 2) Set the ENVIRONMENT VARIABLES, by adding npm path the PATH variable
1) Open Control Panel, search for environment variable
2) Click open the environment variable
3) Create new variable NPM set it with the path of npm as appears from the nodemon installation cmd output (as seen from nodemon installation screenshot):
4) Now add NPM variable to the PATH variables:
Step 3) Close the 'cmd' and open a fresh one and type nodemon --version
Now we have the nodemon ready to use :)
This issue is also possible if running scripts is disabled on the system. In order to enable it:
Open Windows PowerShell with Run as Administrator
Execute:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
npm install -g nodemon
nodemon app
Just had the same problem after creating a new user profile on my development machine.
The problem was that I wasn't running the console (command prompt\powershell ISE) as admin.
Running as admin solved this problem for me.
Just install Globally
npm install -g nodemon
It worked for me on Windows 10.
nodemon app.js
The Set-ExecutionPolicy cmdlet's default execution policy is Restricted for Windows.
You can try installing nodemon by setting this policy to Unrestricted.
execute command : Set-ExecutionPolicy Unrestricted
and then try installing nodemon and execute command: nodemon -v
First you need to install nodemon globally by using this command:
"npm i -g nodemon" (for Windows) and "sudo npm i -g nodemon" (for Mac)
then run
"nodemon app.js"
Now you will be fine.
Run this command:
npm install nodemon -g
Now it will install the nodemon but the problem with my case is that it is installing nodemon somewhere else.I added Nodejs path from (ProgramFiles(x86)) but that did not worked so i found another solution.
Run above command
There will be a path shown during installation where nodemon is installed,then
[Kindly go to below link to see the path][1]
[1]: https://i.stack.imgur.com/ld2sU.png
Copy the path upto npm and set it to environment variable
Now try the below command,hopefully it will run
nodemon YourAppName.js
All above options are failed, I got the permanent solution for this.
Add below line in package.json under dependencies and run npm install. This will add nodemon package to node_modules and there you go, enjoy the coding.
"nodemon": "^1.17.*"
Try in your packge.json:
put "./node_modules/.bin/nodemon" instead of just "nodemon".
For me it works.
This help me with the same problem to start both nodemon and graphql servers
npm run dev
Step 1: $ npm install nodemon --> install nodemon on your project
Step 2: Add serve in script on package.json file as:
"scripts": {
"serve": "nodemon app.js" // you can change file name accordingly
}
Step 3: $ npm run serve
The following worked for me on windows 11.
Type npm install in the terminal. (Within the same directory as the project)
Then type npm run serve to run the application from the default browser.
Remove nodemon because it's a dev dependency and use node instead of it.
"scripts": {
"start": "node server.js"
},
This worked for me.

NodeJS - nodemon not restarting my server

I installed NodeJS (4.4.5) and then proceed to install nodemon (1.9.2) as well,
I follow all the instrucctions of instalation (npm install -g nodemon)
I created a new folder, inside I have my server.js with some basic code:
var http = require('http');
http.createServer(function (request, response){
response.writeHead( 200, {'Content-Type': 'text/plain'} );
response.write("Hello world");
response.end();
}).listen(3000, 'localhost');
console.log('http://localhost:3000');
So when I run in my console "nodemon server.js" I get this:
[nodemon] 1.9.2
[nodemon] to restart at any time, enter `rs`
[nodemon] watching: *.*
[nodemon] starting `node server.js`
http://localhost:3000
(Which means that is running fine)
But when I make some changes in my server.js, It doesn't restart the server
What could be the issue?
In some networked environments (such as a container running nodemon reading across a mounted drive), you will need to use the legacyWatch: true which enabled Chokidar's polling.
Via the CLI, use either --legacy-watch or -L for short:
nodemon -L
I had the same issue on nodemon 1.9.2 : 0 files were watched by nodemon
(try verbose mode nodemon server.js -V to get more information)
After some research, this issue was due to my root directory name :
My root directory was named "mysite.git" thus nodemon was watching 0 file. I had renamed my root directory without the dot and nodemon now works as expected.
Remove all special characters from your root directory and nodemon should work as expected.
You can try running like this nodemon -L yourapp.js, something like that:
"scripts": {
"start": "node index.js",
"dev": "nodemon -L index.js "
}
And run command:
npm run dev
This worked for me!
I just hit what seemed to be the same issue where I would make changes to my code and save them but nodemon wouldn't restart my server. The only way I could update was via 'rs' in the console. I ended here looking for a solution but then decided to just re-install nodemon as there was no good explanation for why it wasn't working:
npm uninstall nodemon
npm install nodemon
After reinstalling the automatic restart on code change worked.
Nodemon uses SIGUSR2 signal for restarting the server, cross-check if your server is overriding the functionality of this process signal.
In my case, I was using heapdump module, which was resetting this signal, hence I started the server using:-
env NODE_HEAPDUMP_OPTIONS=nosignal nodemon app.js
This worked for me.
Edit the package.json file like this :
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "nodemon server.js",
},```
This may help you.
Just Make Sure to add to scripts -> start --legacy-watch ./app
"scripts": {
"start": "nodemon --legacy-watch ./app ./bin/www "
},
I had the same problem. I tried uninstalling nodemon, didn't work. You can try and uninstall nodemon globally, if it works. It didn't work in my case, so what I did is I deleted all the node modules from my system. They will be located at C:/users/user/AppData/Roaming/npm. I even reinstalled node into my system and then installed nodemon, then it worked.
I had the same problem and I solved it adding the path C:\Windows\System32 to the system environment, after that, I had to restart Visual studio code and it worked!...
Reference: https://www.youtube.com/watch?v=a9fIZViTNEA
if you are on windows use Powershell, not WSL. If you want to use WSL, you have to move your project directory to the WSL home directory OR use nodemon -L on the command line.
solve it by adding the path
C:\Windows\System32
to the system environment
Source: https://www.youtube.com/watch?v=a9fIZViTNEA
I found a solution on YouTube. So, the solution is:
Copy this path:
C:\Windows\System32
Go into 'computer/This Pc' properties then into 'Advance System Settings/System Settings'.
Then click on 'Environment variable' Button.
Then double click on 'Path' in User Variables section.
Then click on 'New' and paste this path :
C:\Windows\System32

webpack-dev-server is not recognized

I get a web pack related error when I try to run "npm run dev" as follows
'webpack-dev-server' is not recognized as an internal or external command,
operable program or batch file.
I've attached the screenshot of the error from the terminal. As well as a screenshot of the generated log.
Log
Could you please check the package.json file whether it is installed or not.
If you find webpack-dev-server present under the development dependencies but still its not working try doing an npm install to reinstall the missing packages.
If not you could simply do
npm install webpack-dev-server --save-dev
executing this would save the package under node modules directory.
you could also configure webpack dev server to a custom command under scripts in package.json
"scripts": {
"start:dev": "webpack-dev-server"
}

Categories