others-how to solve astro not found error when trying astro using npm run dev command?

1. Purpose

When we try the astro ,a trending web framework, it would let us run the npm run dev command to start a local astro server, but we encountered a problem:

astro not found
sh: astro: command not found

The details of the issue is:

➜  my-astro-site git:(master) ✗ npm run dev

> @example/[email protected] dev
> astro dev

sh: astro: command not found
➜  my-astro-site git:(master) ✗ npm run dev

> @example/[email protected] dev
> astro dev

sh: astro: command not found
➜  my-astro-site git:(master) ✗ which astro
astro not found



2. Debug and solution

2.1 How to produce the error?

When we follow the hello world guide on astro.build website, we got the error:

➜  astro npm create astro@latest

Welcome to Astro! (create-astro v1.0.0)
Lets walk through setting up your new Astro project.

✔ Where would you like to create your new project? … ./my-astro-site
✔ Which template would you like to use? › Just the basics (recommended)
✔ Template copied!
✔ Would you like to install npm dependencies? (recommended) … yes
✔ Packages installed!
✔ Would you like to initialize a new git repository? (optional) … yes
✔ Git repository created!
✔ How would you like to setup TypeScript? › Strict (recommended)
✔ TypeScript settings applied!
✔ Setup complete.
✔ Ready for liftoff!

 Next steps

You can now cd into the my-astro-site project directory.
Run npm run dev to start the Astro dev server. CTRL-C to close.
Add frameworks like react and tailwind to your project using astro add

Stuck? Come join us at https://astro.build/chat
Good luck out there, astronaut.

➜  astro cd my-astro-site
➜  my-astro-site git:(master) ✗ ll
total 32
-rw-r--r--  1 bswen  staff   1.8K Aug 12 07:50 README.md
-rw-r--r--  1 bswen  staff   109B Aug 12 07:50 astro.config.mjs
-rw-r--r--  1 bswen  staff   274B Aug 12 07:50 package.json
drwxrwxr-x  3 bswen  staff    96B Aug 12 13:56 public
drwxrwxr-x  6 bswen  staff   192B Aug 12 13:56 src
-rw-r--r--  1 bswen  staff   647B Aug 12 14:21 tsconfig.json
➜  my-astro-site git:(master) ✗ npm run dev

> @example/[email protected] dev
> astro dev

sh: astro: command not found
➜  my-astro-site git:(master) ✗ npm run dev

> @example/[email protected] dev
> astro dev

sh: astro: command not found
➜  my-astro-site git:(master) ✗ which astro
astro not found

2.2 The solution

solution to the sh: xxx: command not found error:

➜  my-astro-site git:(master) ✗ npm install -g astro           

added 412 packages, and audited 413 packages in 2m

176 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities
➜  my-astro-site git:(master) ✗ astro

   astro  v1.0.3 Futuristic web development tool.

  astro [command] [...flags]

   Commands 
              add  Add an integration.
            build  Build your project and write it to disk.
            check  Check your project for errors.
              dev  Start the development server.
             docs  Open documentation in your web browser.
          preview  Preview your build locally.
        telemetry  Configure telemetry settings.

   Global Flags 
  --config <path>  Specify your config file.
    --root <path>  Specify your project root folder.
        --verbose  Enable verbose logging.
         --silent  Disable all logging.
        --version  Show the version number and exit.
           --help  Show this help message.

➜  my-astro-site git:(master)

Now we can start the astro test server:

➜  my-astro-site git:(master) ✗ npm run dev         

> @example/[email protected] dev
> astro dev

  🚀  astro  v1.0.3 started in 61ms
  
  ┃ Local    http://localhost:3000/
  ┃ Network  use --host to expose
  
05:10:49 PM [serve]    404                   /stylesheets/style.css

then visit http://localhost:3000

2.3 What does npm install -g do?

The npm install -g is shortcut for npm install --global, it does this:

NPM can also install packages globally so that all the node. js application on that computer can import and use the installed packages. NPM installs global packages into //local/lib/node_modules folder. Apply -g in the install command to install package globally.



3. Summary

In this post, I demonstrated how to fix the astro not found error when trying astro. The key point is to install astro dependency globally. That’s it, thanks for your reading.