Nodejs 为什么写在脚本里的 npm 命令会找不到呢?

发布于 1周前 作者 nodeper 来自 nodejs/Nestjs

Nodejs 为什么写在脚本里的 npm 命令会找不到呢?
我觉的应该是 npm 配置的问题,但没有找到解决办法。。。

13 回复

在 npm 执行前 echo $PATH 看看


可能是你用了 npm XXX 而不是 npm run XXX

which npm, 然后脚本写完整路径试试

#path 的问题, 最好是针对全局的 /etc/profile 来一次 export,

要么就恶心一点 写绝对路径,我一般都是这么干的,
因为 linux 系统 bash 环境 太恶心了,经常会出现 not found xxx 之类的

/root/.nvm/v6.2.0/bin/npm 我想运行 npm install 完整路径怎么写?

脚本里面用绝对路径试试

哪里恶心了 把用户的 PATH 和系统的 PATH 隔离是一个很正确的做法呀 我猜他的脚本是用 crontab 之类的执行的 那个地方不是用户的环境 PATH 肯定是不对的

我想试试 shipit-deploy 实现自动化的服务器部署, https://cnodejs.org/topic/584545bd4c17b38d354363af
绝对路径怎么写呢?

那你自己在脚本里写死 /root/.nvm/v6.2.0/bin/npm install 就行了

不是 就是简单的 npm install

Error: Command failed: ssh -i /Users/123/.ssh/id_rsa [email protected] “cd /tmp/deploy_to/current; /root/.nvm/v6.2.0/bin/npm install”
/usr/bin/env: node: No such file or directory

你好,能请教你一个问题吗?

在 Node.js 项目中,如果在脚本里写的 npm 命令找不到,可能有以下几个原因:

  1. 环境变量问题:确保 Node.js 和 npm 的安装路径已经添加到系统的环境变量中。可以通过在命令行运行 node -vnpm -v 来检查它们是否安装正确且可用。

  2. 脚本中路径问题:在脚本中使用 npm 命令时,需要确保路径正确。如果在某个子目录下运行脚本,而 npm 命令是相对于项目根目录的,则需要调整路径或使用相对路径。

  3. 使用 npx:如果 npm 命令在脚本中找不到,可以尝试使用 npx,它是 npm 包执行器,可以自动找到并运行项目依赖中的 npm 脚本。

示例代码:

# 在 package.json 中使用脚本
{
  "scripts": {
    "start": "node app.js",
    "install-deps": "npx npm install"  # 使用 npx 确保找到 npm
  }
}
  1. 权限问题:在某些操作系统(特别是类 Unix 系统)中,执行 npm 命令可能需要管理员权限。可以尝试使用 sudo 前缀来运行脚本,但这不是推荐的做法,因为它可能带来安全风险。

  2. 检查 npm 配置:运行 npm config list 查看 npm 配置,确保没有错误配置影响命令执行。

确保以上方面都检查无误后,通常可以解决在脚本中找不到 npm 命令的问题。如果问题依旧存在,可以考虑查看 npm 的日志输出,或者运行 npm doctor 进行诊断。

回到顶部