Unable to run babel via npm script "babel: command not found"

30,025

Solution 1

Did you run "npm install" to install the dev packages?

Solution 2

I've come across the same issue lately. Removing the node_modules folder and running npm install again no longer fixes the issue.

The reason you are getting this error is because babel-cli needs to be installed globally, not as a project dependency.

Run npm install -g babel-cli to install it globally.

Babel-preset-es2015 can then be installed as a dev dependency for your projects npm install --save-dev babel-preset-es2015

Solution 3

You should never install babel-cli globally - in fact, they specifically have an entire paragraph telling you not to from their official docs.

Edit package.json >> add a script with the key called, say, build with the value ./node_modules/.bin/babel <commands>

If you called it build, just then type npm run build.

Solution 4

The error occurs because ./node_modules/.bin is not in $PATH. ./node_modules/.bin is where all the executable binaries can be found.

As recommended by the documentation, you can reference the babel cli inside of node_modules:

$ ./node_modules/.bin/babel src -d lib

You can modify your npm run build command to use this:

"scripts": {
    "build": "./node_modules/.bin/babel src -d dist"
},
Share:
30,025
Justin
Author by

Justin

Updated on July 09, 2022

Comments

  • Justin
    Justin almost 2 years

    To get started I ran:

    npm install --save-dev babel-cli
    npm install --save-dev babel-preset-es2015
    npm install --save-dev babel-preset-stage-0 
    

    Here is my package.json:

       {
          "scripts": {
            "build": "babel src -d dist"
          },
          "devDependencies": {
            "babel-cli": "^6.6.5",
            "babel-core": "^6.7.2",
            "babel-preset-es2015": "^6.6.0",
            "babel-preset-stage-0": "^6.5.0"
          }
        }
    

    Here is my .babelrc file:

    {
      "presets": ["es2015", "stage-0"]
    }
    

    My file structure is like this:

    - Root
        - src
            - client 
            - server
            - test  
        - dist 
        - package.json
    

    I am calling npm run build from the root folder. I am expecting it to compile the source folder into the dist folder. It runs and then I get this error:

    > babel src -d dist
    
    sh: babel: command not found
    
    npm ERR! Darwin 15.2.0
    npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "run" "build"
    npm ERR! node v5.8.0
    npm ERR! npm  v3.7.3
    npm ERR! file sh
    npm ERR! code ELIFECYCLE
    npm ERR! errno ENOENT
    npm ERR! syscall spawn
    npm ERR! [email protected] build: `babel src -d dist`
    npm ERR! spawn ENOENT
    npm ERR! 
    npm ERR! Failed at the [email protected] build script 'babel src -d dist'.
    npm ERR! Make sure you have the latest version of node.js and npm installed.
    npm ERR! If you do, this is most likely a problem with the redacted package,
    npm ERR! not with npm itself.
    npm ERR! Tell the author that this fails on your system:
    npm ERR!     babel src -d dist
    npm ERR! You can get information on how to open an issue for this project with:
    npm ERR!     npm bugs redacted
    npm ERR! Or if that isn't available, you can get their info via:
    npm ERR!     npm owner ls redacted
    npm ERR! There is likely additional logging output above.
    
    npm ERR! Please include the following file with any support request:
    npm ERR!     /Users/user/redacted/npm-debug.log
    

    So as you can see, I've installed babel-cli, I've installed the presets, and I think everything is in order according to the babel docs.

    Does anyone have ideas about why it wouldn't be working? Could I be missing a babel npm file? Is "babel src -d dist" incorrect?

    Thanks for any help you can provide!

    I made another folder and followed the same steps, it worked perfectly. For some reason it's not working in this directory.