2

我正在使用 OpsWorks 部署我的自定义 node.js 应用程序。我不是厨师专家,我认为这将是一个简单的过程,但我一直遇到困难。最近的这个问题真的让我退缩了。

基本上我使用的是一个名为“Kue”的包,它依赖于一个名为 Hiredis 的 Node 包。Hiredis 是在 C 级别实现的(据我所知),并使用了一些 Python 级别的编译工具。

OpsWorks 使用的默认 Chef 脚本似乎在安装 Kue 然后 Hiredis 时一直失败。以下是实例尝试部署应用程序时的日志:http: //codepad.org/RXxKXqBq

谷歌搜索后,一些人指出它与 AWS Linux 正在使用的 Python 版本有关。请注意,我使用的是默认的 Node.js 应用程序 Chef recipes,可以在此处找到:https ://github.com/aws/opsworks-cookbooks/tree/release-chef-11.10/opsworks_nodejs

4

1 回答 1

1

我对节点包和版本兼容性不太熟悉,但从您共享的日志来看,您正在使用的名为amdefine的节点包之一似乎存在问题:

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 的版本来修复。

要添加命令npm cache clean,您必须创建新配方或将其添加到您的包装食谱中。唯一应该满足的是这个命令应该在安装节点之后和安装包之前。

如果你想改变版本,你可以检查默认的nodejs recepie,你可以看到安装的nodejs的requred版本在那个cookbook的属性文件中定义。

default[:opsworks_nodejs][:version]所以你可以用属性覆盖默认值。

于 2014-12-15T07:29:54.813 回答