【发布时间】:2019-07-06 09:43:33
【问题描述】:
我正在尝试在 aws cloudformation 用户数据中运行 npm start,如下所示:
nodejs = '\n', \
'echo "starting node server" > /tmp/nodejs.log\n', \
'npm run start-dev --prefix /data/app/myProject >> /tmp/nodejs.log &\n', \
'echo "After starting node server" >> /tmp/nodejs.log', \
'\n' ''
这稍后会与其他命令一起放入用户数据中。
这是我在执行后在 /tmp/nodejs.log 中得到的内容:
starting node server
After starting node server
npm run 命令不会留下任何日志并且服务器没有启动。如果我在终端中运行该命令,那么服务器将成功运行。
为什么没有执行 npm-start 命令?
跟进
服务器未启动的原因是用户数据脚本中无法识别 npm 命令。但是,我正在通过 nvm 在打包程序配置程序脚本中安装节点:
{
"type": "shell",
"script": "sh/install_node.sh",
"execute_command": "chmod +x {{ .Path }}; sudo bash -c '{{ .Vars }} {{ .Path }}'"
}
这是 install_node.sh 文件:
#!/usr/bin/env bash
#install nvm
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.34.0/install.sh | bash
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
#install node
nvm install 6.8.0
所以现在我试图弄清楚为什么通过打包程序配置程序脚本安装节点不足以让 npm 在 aws cloudformation userdata 脚本中被识别。
【问题讨论】:
-
你为什么使用 & ?我也会建议保存错误。 # 'npm run start-dev --prefix /data/app/myProject >> /tmp/nodejs.log 2> /tmp/nodejs_err.log \n', \
-
感谢您对使用 2 的提醒>。现在我可以看到错误是这样的:npm: command not found。不确定如何,因为我在我的一个打包程序配置脚本中使用“nvm install”安装节点。
-
@shantanuo 我正在使用 & 所以服务器将在后台启动,而不是冻结 jenkins 构建
标签: node.js amazon-web-services npm amazon-cloudformation packer