web-dev-qa-db-fra.com

'ts-node' n'est pas reconnu en tant que commande, programme utilisable ou fichier de commandes interne ou externe

Je reçois une erreur dans mon terminal Vs Code et dans l'invite de commande indiquant que 'ts-node' n'est pas reconnu en tant que commande interne ou externe, programme utilisable ou fichier de commandes. pendant que j'essaie la commande de démarrage dans le terminal npm lance dev et j'ai ajouté mon fichier package.json également.

{
"name": "tsnode",
"version": "1.0.0",
"description": "ts-node experiment.",
"scripts": {
    "dev": "nodemon --exec 'ts-node --cache-directory .tscache' ./server.ts",
    "start": "ts-node --fast ./server.ts"
},
"author": "Mugesh",
"license": "ISC",
"dependencies": {
    "@types/body-parser": "^1.16.3",
    "@types/chalk": "^0.4.31",
    "@types/express": "^4.0.35",
    "@types/node": "^7.0.18",
    "body-parser": "^1.17.1",
    "chalk": "^1.1.3",
    "express": "^4.15.2",
    "nodemon": "^1.11.0",
    "ts-node": "^3.0.4",
    "TypeScript": "^2.3.4"
}

}

15
Mugesh

Je ne recommanderais pas de s'appuyer sur ts-node installé globalement dans votre propre module, comme le suggèrent certaines des réponses fournies ici.

Si vous faites cela, toute personne qui installera votre module devra également installer ts-node globalement (un npm install habituel ne suffira pas) et vous aurez un problème si deux modules ont besoin d'éléments tels que ts-node installé globalement mais avec des versions différentes, etc.

Pour éviter cela, toutes vos dépendances doivent être définies dans votre package.json et installées localement dans node_modules.

Il existe une commande peu connue, npx, utilisée pour exécuter des fichiers binaires à partir de modules installés localement dans node_modules.

Par exemple, voyez ce qui se passe lorsque j'installe (localement) ts-node et TypeScript:

rsp@mn-r:~/node/test/ts-test-1$ npm i ts-node TypeScript
npm WARN [email protected] No description
npm WARN [email protected] No repository field.

+ [email protected]
+ [email protected]
added 19 packages from 44 contributors in 2.157s
[+] no known vulnerabilities found [19 packages audited]

et puis j'essaie d'exécuter ts-node:

rsp@mn-r:~/node/test/ts-test-1$ ts-node -v
-bash: /Users/rsp/opt/node/bin/ts-node: No such file or directory

Je peux l'exécuter avec npx:

127!rsp@mn-r:~/node/test/ts-test-1$ npx ts-node -v
ts-node v6.0.3
node v10.1.0
TypeScript v2.8.3

ou je pourrais donner le chemin explicitement:

rsp@mn-r:~/node/test/ts-test-1$ ./node_modules/.bin/ts-node -v
ts-node v6.0.3
node v10.1.0
TypeScript v2.8.3

En tout cas, je n'ai pas besoin d'installer quoi que ce soit dans le monde.

19
rsp

Vous devez installer ts-node en tant que global

npm install -g ts-node

Plus d'information

https://github.com/TypeStrong/ts-node

16
Santiago Quinteros

Je viens de rencontrer un problème similaire: sous Mac OS, --exec ts-node fonctionne, sous Windows cela ne fonctionne pas.

Ma solution consiste à créer un nodemon.json comme ceci:

{
  "watch": "src/**/*.ts",
  "execMap": {
    "ts": "ts-node"
  }
}

et modifiez la section des scripts package.json en 

"scripts": {
  "start": "nodemon src/index.ts"
},
14
Daniel

J'ai rencontré le même problème et j'ai constaté que cela fonctionnait en utilisant des guillemets doubles au lieu de simples.

"dev": "nodemon --exec \"ts-node\" --cache-directory .tscache ./server.ts"

P.S. Ceci est 1 an après le problème. Pas sûr que les versions de paquet soient un facteur. Confirmera si nécessaire.

2
Brian

Si vous utilisez un Mac, voici les étapes que j'ai proposées pour résoudre ce problème dans le terminal. 

  1. Installez globalement et utilisez le chemin du fichier renvoyé avec le lien symbolique ‘ts-node’ et déplacez ce fichier dans/usr/local/bin
  2. Installer localement sans enregistrer dans package.json
  3. copier le dossier dans/node_modules dans/usr/local/lib/node_modules /
  4. Assurez-vous que le fichier est exécutable en ouvrant/ts-node/dist et en utilisant la commande chmod +x bin.js
  5. lancer npm i dans le dossier ts-node
  6. Assurez-vous que le dossier dist existe toujours, sinon recopiez-le. 
  7. Testez l'exécution de ts-node dans le terminal. Si cela ne fonctionne pas, le système affichera une erreur indiquant quel module doit être déplacé vers ../
  8. Après l'exécution de ts-node, veillez à supprimer le dossier/usr/local/lib/node_modules/ts-node/node_modules.
0
Coded Container

Pour moi, supprimer node_modules et l'installer à nouveau à l'aide de npm i suffisait.

0
karoluS