我目前正在尝试通过bash脚本(在cronjob上)以编程方式运行npx eleventy
函数
我已经在我的终端上尝试过了,它运行正常,运行了这样的命令
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脚本中运行以下命令(如下)不起作用...
test.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
请寻求帮助!
编辑:
我的cronjob
* * * * * bash /Users/me/Desktop/test.bash >> /Users/me/Desktop/testvimbackup.log 2>&1
echo PATH=$PATH 1>&2
的输出:
PATH=/usr/bin:/bin
答案 0 :(得分:1)
我认为问题是因为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