How do I fix "npm run watch" saying npm ERR! Missing script: "watch"?

Richard C.
jump to solution

The Problem

If you run npm run watch you might get the error:

$ npm run watch
npm ERR! Missing script: "watch"

The npm run command reads all the properties of the scripts object in your package.json file and runs the command matching the value after run. In this case, npm tries to find a property called watch, which is missing from the package.json file.

The error occurs because the framework you are using, such as Laravel, used to have a watch script, but has upgraded from Webpack to a newer bundling framework, like Vite, in recent versions.

The Solution

First open package.json and look at the scripts entries. For example:

{
  "scripts": {
    "dev": "vite",
    "build": "vite build"
  },
  ...
}

Find a script property that matches what you used to do with watch. In the example above, dev is similar. In your framework and package file, the script may be called test or run or any name that does not involve production or building.

Now run npm using that script name, such as npm run dev. Your app should run correctly. Don’t forget to run npm install first to install the necessary dependencies.

If you don’t have a script entry for your local machine, read the documentation for the bundler you are using, such as Vite, Parcel, or Webpack, and add it to your package.json file.

Considered "not bad" by 4 million developers and more than 150,000 organizations worldwide, Sentry provides code-level observability to many of the world's best-known companies like Disney, Peloton, Cloudflare, Eventbrite, Slack, Supercell, and Rockstar Games. Each month we process billions of exceptions from the most popular products on the internet.

Sentry