【问题标题】:Why I can only run packages installed globally?为什么我只能运行全局安装的包?
【发布时间】:2021-05-28 09:25:01
【问题描述】:

我刚开始使用 Mac iOS,当我开始设置一个新的后端 (TypeScript) 项目时,我遇到了 npm 脚本中的所有包都不起作用的问题。

Cannot find module 'typescript/bin/tsc'
Require stack:
- /Users/valera/Documents/projects/web/bwtc-backend/node_modules/tsc-watch/lib/tsc-watch.js
- /Users/valera/Documents/projects/web/bwtc-backend/node_modules/tsc-watch/index.js

我检查了我的 node_modules 文件夹,甚至再次删除了它和 npm i 包,但它没有帮助。由于某种原因,它看不到它们或其他东西。

我的 package.json 文件:

{
  "name": "name",
  "main": "server.js",
  "private": true,
  "scripts": {
    "clean": "rm -rf ./dist",
    "tsc": "tsc",
    "start:build": "npm-run-all clean tsc",
    "start:dev": "cross-env NODE_ENV=DEVELOPMENT tsc-watch --onSuccess 'node ./dist/server.js'",
    "dev": "npm-run-all clean start:dev",
    "prod": "npm-run-all clean start:build"
  },
  "license": "ISC",
  "dependencies": {
    "dotenv": "^8.2.0",
    "express": "4.17.1",
    "telegraf": "^4.0.0"
  },
  "devDependencies": {
    "@types/express": "4.17.11",
    "cross-env": "^7.0.3",
    "npm-run-all": "^4.1.5",
    "tsc-watch": "^4.2.9"
  }
}

没什么特别的。在我的 Windows 机器上一切正常。可能在Mac上有什么特殊的使用方法,我不知道。

我发现的唯一解决方法是使用我需要在脚本npm run dev 中使用的包,例如,作为全局安装而不是作为 package.json 中的脚本,而是在终端中运行整个脚本(当然与以前全局安装的软件包)。

我认为不应该这样。

任何人都可以在这里帮助我或对这个问题有任何想法吗?

【问题讨论】:

  • 说实话,我不知道原因,否则我也会在我的系统上修复它 - 只是没有花时间研究它。但是,如果您拥有package.json,则可以调用本地工具并通过使用npx 运行它来确保它来自正确的node_nodules。例如:npx tsc 将起作用。另一条评论,而不是 rm -rf ./dist 使用 rimraf 这是可移植的,例如rimraf ./dist.
  • @MikeCoakley 对 npx 没有任何作用。我不知道这里有什么问题。也许是 PATH 变量或其他东西,但我以前从未遇到过此类问题。谢谢,我同意 rimraf 很好
  • @Boug,谢谢!我去看看

标签: node.js typescript macos npm terminal


【解决方案1】:

解决它的唯一方法是完全卸载 node 和 npm。 我在任何我能检查的地方都卸载了它,我没有任何版本,如 brew 或 nvm,并从我的机器上删除了 node 和 npm 的所有文件。

然后我从官网下载了最新版本的node,然后也将npm更新到了最新版本。

在那之后,它对我有用

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多