Vs Codeターミナルとコマンドプロンプトでエラーが発生しています'ts-node'は内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されません開始コマンドの試行中ターミナルでnpm run devそしてpackage.jsonファイルも追加しました。
{
"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"
}
}
ここにある回答のいくつかが示すように、自分のモジュールにグローバルにインストールされたts-node
に依存することはお勧めしません。
それを行うと、モジュールをインストールする人はだれでもts-node
をグローバルにインストールする必要があり(通常のnpm install
だけでは十分ではありません)、2つのモジュールがts-node
をインストールする必要があり、バージョンが異なるなどの問題が発生します。
これを回避するには、すべての依存関係をpackage.jsonで定義し、node_modulesにローカルにインストールする必要があります。
Node_modulesにローカルにインストールされているモジュールからバイナリを実行するために使用される、あまり知られていないコマンドnpx
があります。
たとえば、ts-node
および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]
そして、私は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
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
または、明示的にパスを与えることができます:
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
いずれにしても、グローバルに何かをインストールする必要はありません。
同様の問題が発生しました。MacOSでは--exec ts-node
が機能しますが、Windowsでは機能しません。
私の回避策は、次のようなnodemon.json
を作成することです:
{
"watch": "src/**/*.ts",
"execMap": {
"ts": "ts-node"
}
}
package.json
スクリプトセクションを
"scripts": {
"start": "nodemon src/index.ts"
},
私は同じ問題に遭遇し、単一ではなく二重引用符を使用することで機能することを発見しました。
"dev": "nodemon --exec \"ts-node\" --cache-directory .tscache ./server.ts"
P.S。これは問題の1年後です。パッケージのバージョンが要因かどうかはわかりません。必要に応じて確認します。
node_modules
を削除し、npm i
を使用して再度インストールするだけで十分でした。
Ts-nodeが機能していない場合は、代替手段として次を実行できます。
1)nodemonをローカルにインストールします-> npm i nodemon
2)package.jsonの「スクリプト」に次を追加します。
"scripts": {
"start": "nodemon index.ts",
"test": "echo \"Error: no test specified\" && exit 1"
},
3)npm start
を実行します(これによりノードが自動的に実行されますが、これはコンパイルされません)
4)ターミナル/コマンドラインで新しいタブを開き、作業中のフォルダーをcdして、tsc index.tsc --watch
を実行します
これにより、TypeScriptがコンパイルされます。唯一の欠点は、ノードを自動的に実行するためとタブを自動的にコンパイルするための両方のタブを開く必要があるだけですが、これは機能します。
nodemon
の使用中に同様の問題が発生しました:
nodemon
をグローバルにインストールし、ts-node
をローカルにのみインストールしました。解決:
ts-node
をグローバルにインストールしました(まだローカルの依存関係を保持しています)。Dev依存関係から削除し、依存関係に追加しました。これで私の問題は解決しました。
あなたがMacを使用している場合、これらは端末でこれを修正するために思いついた手順です。
chmod +x bin.js
を使用して、ファイルが実行可能であることを確認します