我正在使用OpsWorks来部署我的自定义node.js应用程序。我不是厨师专家,并认为这将是一个简单的过程,但我一直在遇到障碍。这个最近的问题真的让我退缩了。
基本上我使用的是名为“Kue”的软件包,它取决于名为Hiredis的Node软件包。 Hiredis是在C级实现的(据我所知)并使用了一些Python级别的编译工具。
似乎OpsWorks使用的默认Chef脚本在安装Kue然后Hiredis时仍然失败。以下是实例尝试部署应用程序时的日志:http://codepad.org/RXxKXqBq
通过Google搜索,有些人表示它与AWS Linux正在使用的Python版本存在问题。请注意,我使用的是默认的Node.js应用程序Chef配方,可在此处找到:https://github.com/aws/opsworks-cookbooks/tree/release-chef-11.10/opsworks_nodejs
答案 0 :(得分:1)
我对节点包和版本可比性并不熟悉,但是从您共享的日志中看来,您使用的一个节点包中的问题似乎是{{3} }:
npm ERR! Failed to parse json
npm ERR! Unexpected end of input
npm ERR! File: /home/deploy/.npm/amdefine/0.1.0/package/package.json
npm ERR! Failed to parse package.json data.
npm ERR! package.json must be actual JSON, not just JavaScript.
npm ERR!
npm ERR! This is not a bug in npm.
npm ERR! Tell the package author to fix their package.json file. JSON.parse
npm ERR! System Linux 3.14.26-24.46.amzn1.x86_64
npm ERR! command "/usr/local/bin/node" "/usr/local/bin/npm" "install" "--production"
npm ERR! cwd /srv/www/my_api/releases/20141214002817
npm ERR! node -v v0.10.29
npm ERR! npm -v 1.4.14
npm ERR! file /home/deploy/.npm/amdefine/0.1.0/package/package.json
可以通过npm cache clean
或更改nodejs的版本来修复,可能是amdefine。
要添加命令npm cache clean
,您必须创建新配方或将其添加到you found too。唯一应该满足的是该命令应该在安装节点之后和安装包之前。
如果你想更改版本,你可以chceck wrapper cookbook你可以看到已安装的nodejs的所需版本在default nodejs recepie中为该食谱定义。
因此,您可以使用default[:opsworks_nodejs][:version]
属性覆盖默认值。