我正在使用rebar来获取/编译我的依赖项,其中rebar.conf
具有以下内容:
{deps, [
...
{couchbeam, ".*", {git, "git://github.com/benoitc/couchbeam.git", {branch, "master"}}}
]}.
然后我使用relx生成发布。 relx.config有:
{release, {myapp, "0.0.1"}, [myapp, couchbeam]}.
{extended_start_script, true}.
myapp.app.src:
{application, myapp,
[
{description, ""},
{vsn, "1"},
{registered, []},
{applications, [
kernel,
stdlib,
... ,
couchbeam
]},
{mod, { myapp_app, []}},
{env, []}
]}.
启动了couchdb后,我在控制台下运行我的版本并尝试使用以下几行测试couchbeam:
Host = "localhost",
Port = 5984,
Prefix = "",
Options = [],
S = couchbeam:server_connection(Host, Port, Prefix, Options).
{ok, _Version} = couchbeam:server_info(S).
最后一行给出了错误:
** exception error: undefined function jsx:decode/1
为了解决这个问题,我打开了deps/couchbeam/couchbeam.app.src
并更改了:
{applications, [kernel,
stdlib,
asn1,
crypto,
public_key,
ssl,
idna,
hackney
]},
并添加了jsx:
{applications, [kernel,
stdlib,
asn1,
crypto,
public_key,
ssl,
idna,
hackney,
jsx
]},
我在如何添加couchbeam作为依赖项的设置中是否有问题?我觉得我不应该破解我的一个依赖项的.app.src
答案 0 :(得分:2)
我的建议是,couchbeam不包含jsx
作为应用程序级别的拒绝(在.app.src
文件中),因为它可以使用不同的json编码器(实际上仅与jsx
一起使用和jiffy
)。因此,您应该决定自己使用哪一个。
由于沙发横梁和您的应用程序都没有提供有关此依赖关系的任何信息,relx
在发布时不包含jsx
。
承认,我没有尝试,但我认为您的解决方案是将jsx
定义为您自己的应用程序的依赖项(即,将其添加到您自己的.app.src
文件而不是{{ 1}})。