web-dev-qa-db-ja.com

'ts-node'は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されません

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

}

30
Mugesh

ここにある回答のいくつかが示すように、自分のモジュールにグローバルにインストールされた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

いずれにしても、グローバルに何かをインストールする必要はありません。

29
rsp

Ts-nodeをグローバルとしてインストールする必要があります

npm install -g ts-node

詳しくは

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

27
Sam Quinn

同様の問題が発生しました。MacOSでは--exec ts-nodeが機能しますが、Windowsでは機能しません。

私の回避策は、次のようなnodemon.jsonを作成することです:

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

package.jsonスクリプトセクションを

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

私は同じ問題に遭遇し、単一ではなく二重引用符を使用することで機能することを発見しました。

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

P.S。これは問題の1年後です。パッケージのバージョンが要因かどうかはわかりません。必要に応じて確認します。

8
Brian

node_modulesを削除し、npm iを使用して再度インストールするだけで十分でした。

2
karoluS

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がコンパイルされます。唯一の欠点は、ノードを自動的に実行するためとタブを自動的にコンパイルするための両方のタブを開く必要があるだけですが、これは機能します。

1
Jackie Santana

nodemonの使用中に同様の問題が発生しました:

  • nodemonをグローバルにインストールし、ts-nodeをローカルにのみインストールしました。

解決:

  • ts-nodeをグローバルにインストールしました(まだローカルの依存関係を保持しています)。
0
Tuhafeni Angula

Dev依存関係から削除し、依存関係に追加しました。これで私の問題は解決しました。

0
Esqarrouth

あなたがMacを使用している場合、これらは端末でこれを修正するために思いついた手順です。

  1. グローバルにインストールし、返されたファイルパスをシンボリックリンク「ts-node」で使用し、このファイルを/ usr/local/binに移動します
  2. Package.jsonに保存せずにローカルにインストールします
  3. / node_modulesのフォルダーを/ usr/local/lib/node_modules /にコピーします
  4. / ts-node/distを開き、コマンドchmod +x bin.jsを使用して、ファイルが実行可能であることを確認します
  5. ts-nodeフォルダーでnpm iを実行します
  6. Distフォルダーが存在することを確認してください。存在しない場合は、コピーしてください。
  7. ターミナルでts-nodeを実行してテストします。機能しない場合、どのモジュールを../に移動する必要があるかというエラーが返されます。
  8. Ts-nodeの実行後、必ずフォルダー/ usr/local/lib/node_modules/ts-node/node_modulesを削除してください
0
Coded Container