×

解决GIT自动部署执行NPM提示command not found的问题。

天外来信 天外来信 发表于2021-11-11 17:54:33 浏览984 评论0

抢沙发发表评论

私有服务器做GIT服务器

在hook做了自动提交脚本如下:

#!/bin/sh
# 打印输出
echo '======上传代码到服务器======'
# 打开线上项目文件夹
cd /www/wwwroot/dev/crm
# 这个很重要,如果不取消的话将不能在cd的路径上进行git操作
unset GIT_DIR
#git pull origin master
git fetch --all && git reset --hard origin/master && git pull
# 自动编译vue项目,如有需要请去掉前面的#号
npm i -g
npm run build
# 自动更新composer(我暂时没试过)
#composer update
echo $(date) >> hook.log
echo '======代码更新完成======'


结果每次提交时都提示command not found 。

以前一直手工再登录服务器再进行人工打包,今天有空,找了一些资料。终于解决。不费话,先说步骤。


1、找到文件

/etc/sudoers

打开编辑,

## Same thing without a password
# %wheel	ALL=(ALL)	NOPASSWD: ALL

找到以上文字,在后面添加命令

git的用户名 ALL = NOPASSWD: ALL

保存退出,

运行:

visudo -c    #检查是是否文件是否正确

以上操作是先将git 用户 的sudo命令的输入密码 去掉。

2、修改自动提交脚本如下:

#!/bin/sh
# 打印输出
echo '======上传代码到服务器======'
# 打开线上项目文件夹
cd /www/wwwroot/dev/crm
# 这个很重要,如果不取消的话将不能在cd的路径上进行git操作
unset GIT_DIR
#git pull origin master
git fetch --all && git reset --hard origin/master && git pull
# 自动编译vue项目,如有需要请去掉前面的#号
sudo npm i -g  #改了这里
sudo npm run build  #改了这里
# 自动更新composer(我暂时没试过)
#composer update
echo $(date) >> hook.log
echo '======代码更新完成======'


3、ln 命令解决command not found 的问题

先执行 which npm

显示:/www/server/nvm/versions/node/v14.16.1/bin/npm


这时要执行以下命令:

sudo ln -s /www/server/nvm/versions/node/v14.16.1/bin/node /usr/bin/node
sudo ln -s /www/server/nvm/versions/node/v14.16.1/lib/node /usr/lib/node
sudo ln -s /www/server/nvm/versions/node/v14.16.1/bin/npm /usr/bin/npm
sudo ln -s /www/server/nvm/versions/node/v14.16.1/bin/node-waf /usr/bin/node-waf


然后,再对文件做git push测试通过。

image.png

评论列表

访客