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"
}
}
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.
npm install -g ts-node
Plus d'information
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"
},
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.
Si vous utilisez un Mac, voici les étapes que j'ai proposées pour résoudre ce problème dans le terminal.
chmod +x bin.js
Pour moi, supprimer node_modules
et l'installer à nouveau à l'aide de npm i
suffisait.