npx 执行本地 node_modules 里的命令为什么会报错?

UX-瑞娜 阅读 4

我在项目里装了 TypeScript,想用 npx 调用本地的 tsc 编译代码,但每次运行 npx tsc 都提示找不到命令,明明 node_modules/.bin 里面有 tsc 啊?

我试过删除 node_modules 重装依赖,也确认 package.json 里有 typescript,但还是不行。是不是 npx 默认不会找本地的包?还是我哪里理解错了?

我来解答 赞 2 收藏
二维码
手机扫码查看
1 条解答
Newb.梓涵
这个问题我之前也踩过坑!npx 默认是会先找本地 node_modules/.bin 的,所以你理解没错。问题可能出在几个地方,咱们一个个排查。

首先确认一下,你执行命令的时候是不是在项目根目录?npx 找本地包是根据当前工作目录来的,如果你跑到 src 目录里执行,那肯定找不到。

可以试试直接用相对路径调用,看看能不能跑:

./node_modules/.bin/tsc --version


如果这个能跑,说明包是装好的,问题出在 npx 那边。

另一个常见情况是命令行有缓存。试试加上 --no-install 参数,强制它只用本地包:

npx --no-install tsc


这样 npx 就不会尝试去远程下载,如果本地没有会直接报错,方便你定位问题。

还有个我个人的建议,平时开发最好把常用命令写到 package.json 的 scripts 里,比如:

"scripts": {
"build": "tsc"
}


然后直接 npm run build,npm 会自动把 node_modules/.bin 加到 PATH 里,省心很多,不用纠结 npx 的各种行为。

对了,如果你用的是 Windows,记得检查一下 node_modules/.bin 下面有没有 tsc.cmd 这个文件,Windows 下是靠这个执行的。

希望能帮到你!如果还是不行,把你跑的具体命令和报错信息贴出来,我再帮你看看。
点赞
2026-03-01 14:13