首页 > 解决方案 > bash 没有运行 npm 或 npx 命令

问题描述

我目前正在尝试npx eleventy通过 bash 脚本(在 cronjob 上)以编程方式运行一个函数

我已经在我的终端上试过了,它工作得很好,运行了一个命令

cd /Users/me/Desktop/test-folder/public && /usr/local/bin/npx eleventy

还检查了以下内容

npm -v-6.14.5

npx -v-6.14.5

运行which npm返回/usr/local/bin/npm和运行which npx返回/usr/local/bin/npx

但是,在 bash 脚本中运行以下命令(如下)不起作用......

测试.bash

cd /Users/me/Desktop/test-folder/public && /usr/local/bin/npx eleventy
cd /Users/me/Desktop/test-folder/public && /usr/local/bin/npx -v
cd /Users/me/Desktop/test-folder/public && /usr/local/bin/npm -v

抛出以下错误:env: node: No such file or directory

但是,似乎我在运行以下命令时确实有节点,

cd /Users/me/Desktop/test-folder/public && /usr/local/bin/node -v

返回v12.16.1

请寻求帮助!

编辑:

我的定时任务

* * * * * bash /Users/me/Desktop/test.bash >> /Users/me/Desktop/testvimbackup.log 2>&1

输出echo PATH=$PATH 1>&2

PATH=/usr/bin:/bin

标签: node.jsbashshellnpm

解决方案


我认为问题是因为crontab在空环境下运行。

尝试像这样采购您的个人资料(在脚本中)

. $HOME/.bash_profile

cd /Users/me/Desktop/test-folder/public && /usr/local/bin/npx eleventy
cd /Users/me/Desktop/test-folder/public && /usr/local/bin/npx -v
cd /Users/me/Desktop/test-folder/public && /usr/local/bin/npm -v

(或尝试. $HOME/.profile$HOME/.bashrc如果它不起作用)

替代方案:手动设置节点的路径

export PATH=$PATH:/usr/local/bin


cd /Users/me/Desktop/test-folder/public && /usr/local/bin/npx eleventy

cd /Users/me/Desktop/test-folder/public && /usr/local/bin/npx -v

cd /Users/me/Desktop/test-folder/public && /usr/local/bin/npm -v


推荐阅读