web-dev-qa-db-fra.com

Impossible d’exécuter babel via le script npm "babel: commande introuvable"

Pour commencer j'ai couru:

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

Voici mon 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"
      }
    }

Voici mon fichier .babelrc:

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

Ma structure de fichier est comme ceci:

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

J'appelle npm run build à partir du dossier racine. Je m'attends à ce qu'il compile le dossier source dans le dossier dist. Il fonctionne et puis j'obtiens cette erreur:

> 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

Comme vous pouvez le constater, j’ai installé babel-cli, j’ai installé les préréglages et je pense que tout est en ordre, conformément à la documentation de babel. 

Quelqu'un a-t-il des idées sur les raisons pour lesquelles cela ne fonctionnerait pas? Est-ce que je pourrais manquer un fichier babel npm? "Babel src -d dist" est-il incorrect? 

Merci pour toute l'aide que vous pourrez fournir!

Je fis un autre dossier et suivis les mêmes étapes, cela fonctionnait parfaitement. Pour une raison quelconque, cela ne fonctionne pas dans ce répertoire.

15
Justin

Avez-vous exécuté "npm install" pour installer les packages de développement?

3
s.xie

J'ai rencontré le même problème récemment. Supprimer le dossier node_modules et exécuter à nouveau npm install ne résout plus le problème. 

Vous obtenez cette erreur parce que babel-cli doit être installé de manière globale et non comme une dépendance de projet.

Exécutez npm install -g babel-cli pour l'installer globalement.

Babel-preset-es2015 peut ensuite être installé en tant que dépendance de développement pour vos projets npm install --save-dev babel-preset-es2015

12
tom

Vous ne devriez jamais installer babel-cli dans le monde entier - en fait, ils ont spécifiquement un paragraphe entier vous disant de ne pas de leurs documents officiels. 

Editez package.json >> ajoutez un script avec la clé appelée, par exemple, build avec la valeur ./node_modules/.bin/babel <commands>

Si vous l'avez appelé build, tapez alors npm run build.

10
dylanh724

L'erreur se produit parce que ./node_modules/.bin n'est pas dans $PATH. ./node_modules/.bin est l'endroit où tous les fichiers binaires exécutables peuvent être trouvés.

Comme recommandé par documentation , vous pouvez référencer la babel cli dans node_modules:

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

Vous pouvez modifier votre commande npm run build pour utiliser ceci:

"scripts": {
    "build": "./node_modules/.bin/babel src -d dist"
},
6
gnerkus

Bon nombre des réponses ci-dessus sont correctes.

L'erreur se produit car ./node_modules/.bin n'est pas dans $PATH. ./node_modules/.bin est l'endroit où tous les fichiers binaires exécutables peuvent être trouvés.

Ce que j'ai fait est de créer une fonction d'alias dynamique simple dans mon fichier zshrc.

# Babel
function bbl() {
    ./node_modules/.bin/babel "$@"
}

Maintenant, vous pouvez utiliser bbl au lieu de babel

bbl --version
6.24.1 (babel-core 6.25.0)
0
Ahmad Awais