Brian Patrick
Brian Patrick

Reputation: 341

Nodemon ''npm' is not recognized as an internal or external command

I realize that this is most likely a duplicate question. I'm new to nodemon and I'm trying to establish a server for a Vue JS project with nodemon. I'm trying to run eslint with nodemon and can't figure out why I keep getting the error message. If I remove npm after --exec it will tell me ''run' is not recognized, and if I remove that I will get ''lint' is not recognized and so on. My package.json file:

{
  "name": "server",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "start": "nodemon src/app.js --exec 'npm run lint && node'",
    "lint": "eslint **/*.js"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "eslint": "^4.16.0",
    "nodemon": "^1.14.12"
  }
}

I have also tried this code in my start scripts:

   "scripts" : {
      "start": "./node_modules/nodemon/bin/nodemon.js src/app.js --exec 'npm run lint && node'",
      "lint": "./nodemodules/.bin/eslint **/*.js"
    } 

Where is tells me that "." is not recognized as an internal external command. I've installed nodemon into my server folder and in the project directory as well as globally. I have done the same with eslint as well.

Upvotes: 5

Views: 4933

Answers (3)

Vasu Dev Mandal
Vasu Dev Mandal

Reputation: 11

install it globally for making it available on path.

npm i -g nodemon 
or if using yarn
yarn global add nodemon

and if you tried this approach and it didn't work.

you should try running it locally..
you have to create a script in your package.json like this

"script": {
    "server" : "nodemon scriptFile.js" //name of the file you want to run
}

then use,

npm run server

but before it,
install nodemon locally. check it, if it is available on package.json

Upvotes: 0

gamecraftCZ
gamecraftCZ

Reputation: 324

I had the same problem.
For some reason you can't use simple quotes in npm scripts.
Use escaped double quotes instead. This should work:

"start": "nodemon src/app.js --exec \"npm run lint && node\""

Upvotes: 10

namila007
namila007

Reputation: 1134

i had the same problem today. did some google stuff and found that this is not working anymore. so i tried this

"scripts": {
"prestart": "npm run lint ",
"start": "nodemon src/app.js ",
"lint": "./node_modules/.bin/eslint src/*.js"
},

when you npm start node will run the pre-start script before the start script.Once a file being updated this pre-start wont run by the nodemon.So for that we have to call the nodemon events.So create a nodemon.json on root folder and paste following.

    {
 "events": {
     "restart": "npm run lint"

   }
}

you can read more nodemon config options from here nodemon config .There are more nodemon events.you can read them from here event restart

PS:im very new to this. :)

EDIT1:

You can use as follows. this dont need a nodemon config;

"scripts": {
"start": "node src/app.js",
"test": "echo \"Error: no test specified\" && exit 1",
"dev": "nodemon src/app.js --exec \"npm run lint --fix && node\"",
"lint": "eslint --fix **/*.js "
}

for run use npm run dev it will run es lint + nodemon. this is for windows cmd command.if you are using bash terminal, remove \ in "dev" ;

"dev": "nodemon src/app.js --exec "npm run lint --fix && node""

Upvotes: 10

Related Questions