版本 - Ubuntu 16.04.2,Angular CLI 1.1.0,Ansible 2.3.0.0和Python 2.7.12。
我尝试在本地运行ng build
以创建最终将被复制到远程服务器的构建。由于某种原因,在ansible中运行时无法识别ng命令。
Angular CLI全局安装,ng
无处不在。
这是戏剧:
- name: "Building"
shell: chdir="~/project/dir/" ng build
以下是Ansible的确切错误:
致命:[localhost]:失败! => {"更改":true," cmd":" ng build"," delta":>" 0:00: 00.001310","结束":" 2017-05-31 22:59:34.397388","失败":真实," rc& #34;:> 127,"开始":" 2017-05-31 22:59:34.396078"," stderr":" / bin / sh:1:ng:not>找到"," stderr_lines":[" / bin / sh:1:ng:not found"]," stdout":"",>" stdout_lines":[]}
有什么想法吗?
答案 0 :(得分:1)
尝试这样的事情。注意,我使用NVM来管理节点版本。
tasks:
- name: "Build myapp"
command: ng build --prod --aot --env:prod
args:
chdir: /home/jeff/myapp/client/
environment:
PATH: /sbin:/usr/sbin:/bin:/usr/bin:/usr/local/bin:/home/jeff/.nvm/versions/node/v7.9.0/bin/
答案 1 :(得分:0)
使用PATH
可执行文件的完整路径。
没有" 全球安装的东西"在Unix / Linux / Windows中。可执行文件位于man bash
变量中定义的目录中。
Ansible调用非交互式shell会话,并非所有rc文件都来源(参见例如{{1}})。
答案 2 :(得分:0)
我不熟悉Angular,但如果ng是shell函数而不是可执行文件,那么你可以尝试重写为:
- name: "Building"
shell: "bash -lc 'ng build'"
args:
chdir="~/project/dir/"