node.js - 为什么我只能运行全局安装的包?
问题描述
我刚刚开始使用 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 中的脚本,而是在终端中运行整个脚本(当然使用以前全局安装的包)。
我相信不应该是这样的。
任何人都可以在这里帮助我或对这个问题有任何想法吗?
解决方案
解决它的唯一方法是完全卸载 node 和 npm。我在任何可以检查的地方都卸载了它,我没有像 brew 或 nvm 这样的任何版本,并从我的机器上删除了 node 和 npm 的所有文件。
然后我从官方网站下载了最新版本的 node,然后也将 npm 更新到了最新版本。
之后,它对我有用
推荐阅读
- node.js - NodeJS 应用程序仅继续 6 个打开的连接
- c++ - ShowModal 不触发对话框的条件语句
- python-3.x - 缺失值的线性插值函数
- node.js - 如何在 Gitlab 中为 nodejs 应用程序运行测试
- c++ - 指向成员变量的指针 - C++ 中的自动类型
- javascript - openlayers 4.4:更改 wms 源的颜色和符号
- jquery - 如何实现这样的连续视差?
- javascript - ASP.Net MVC Ajax 请求触发一次,然后不再触发
- html - CSS:第一个孩子的选择器,除非在某个类的子标签中
- javascript - replace() 未按预期运行,试图在 JavaScript 中替换换行符 (/n /rn /r)