'ts-node'不被识别为内部或外部命令,可操作程序或批处理文件

问题描述 投票:22回答:7

我在我的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"
}

}

node.js typescript2.0 ts-node
7个回答
25
投票

我不建议在您自己的模块中依赖全局安装的ts-node,因为这里的一些答案建议。

如果你这样做那么安装你的模块的任何人都需要全局安装ts-node(只是通常的npm install是不够的)然后你会遇到问题,如果两个模块需要像全球安装的ts-node但有不同的版本等。

为避免这种情况,应在pa​​ckage.json中定义所有依赖项,并在node_modules中本地安装。

有一个鲜为人知的命令npx,用于从node_modules中本地安装的模块运行二进制文件。

例如,看看当我安装(本地)ts-nodetypescript时会发生什么:

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

无论如何,我不需要在全球范围内安装任何东西。


22
投票

You need to install ts-node as global

npm install -g ts-node

更多信息

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


16
投票

我刚刚遇到了类似的问题:在Mac OS上--exec ts-node工作,在Windows上却没有。

我的解决方法是创建一个这样的nodemon.json

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

并将package.json脚本部分更改为

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

6
投票

我遇到了同样的问题,发现它使用双引号而不是单引号。

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

附:这是问题发生后1年。不确定软件包版本是否是一个因素。如果需要将确认。


1
投票

对我来说,删除node_modules并使用npm i再次安装就足够了。


0
投票

如果您使用的是这些,我提出的步骤是为了在终端中解决这个问题。

  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节点,如果它不起作用,它将返回一个错误,需要将哪个模块移动到../
  8. 运行ts节点后,请务必删除文件夹/ usr / local / lib / node_modules / ts-node / node_modules

0
投票

我从dev依赖项中删除它并将其添加到依赖项中。这解决了我的问题。


0
投票

使用nodemon时遇到了类似的问题:

  • 我在全球安装了nodemon,并且仅在本地安装了ts-node

解:

  • 我在全球安装了ts-node(仍保持本地依赖性)。
© www.soinside.com 2019 - 2024. All rights reserved.