【发布时间】:2015-05-05 13:14:46
【问题描述】:
我工作的公司使用Slack 进行内部消息传递。它允许与大量不同的软件和服务进行大量出色的集成。我正在制作自己的机器人,用于将 webhook 发送到 Slack。
我已经完成了所有设置并开始工作,我有一个发送 JSON 有效负载的 Perl 脚本。如果我手动触发脚本,一切都会完美无缺,我的 Slack 机器人也会发送消息。
但是,当脚本被Finalbuilder(用于自动构建处理的软件)触发时,它会失败。 我收到以下回复:
501 Can't load 'C:/Strawberry/perl/site/lib/auto/Net/SSLeay/SSLeay.dll' for module Net::SSLeay: load_file:The specified module could not be found (LWP::Protocol::https not installed)
所以我想我需要安装“LWP::Protocol::https”模块。我刚刚打开我的cpan客户端并写了install LWP::Protocol::https
安装模块后仍然报错。
我写了test LWP::Protocol:https,回复如下:
Running test for module 'LWP::Protocol::https'
Running make for M/MS/MSCHILLI/LWP-Protocol-https-6.06.tar.gz
Checksum for C:\Strawberry\cpan\sources\authors\id\M\MS\MSCHILLI\LWP-Protocol-https-6.06.tar.gz ok
Scanning cache C:\Strawberry\cpan\build for sizes
............................................................................DONE
CPAN.pm: Going to build M/MS/MSCHILLI/LWP-Protocol-https-6.06.tar.gz
Checking if your kit is complete...
Looks good
Writing Makefile for LWP::Protocol::https
Could not read metadata file. Falling back to other methods to determine prerequisites
cp lib/LWP/Protocol/https.pm blib\lib\LWP\Protocol\https.pm
MSCHILLI/LWP-Protocol-https-6.06.tar.gz
C:\Strawberry\c\bin\dmake.EXE -- OK
Running make test
C:\Strawberry\perl\bin\perl.exe "-MExtUtils::Command::MM" "-e" "test_harness(0,'blib\lib', 'blib\arch')" t/*.t
t/apache.t ....... ok
t/https_proxy.t .. 1/56 # creating cert for direct.ssl.access
# creating cert for direct.ssl.access
# creating cert for foo
# creating cert for bar
# creating cert for foo
# creating cert for foo
# creating cert for bar
# creating cert for bar
t/https_proxy.t .. ok
All tests successful.
Files=2, Tests=61, 8 wallclock secs ( 0.02 usr + 0.01 sys = 0.03 CPU)
Result: PASS
MSCHILLI/LWP-Protocol-https-6.06.tar.gz
C:\Strawberry\c\bin\dmake.EXE test -- OK
我可以使用 windows CMD 或 Finalbuilder 来触发我的脚本。两者都可以正常工作,但是当通过 Continua CI 激活 Finalbuilder 项目时,我收到“无法加载 ssleay.dll”错误。
我不知道现在该做什么。有谁知道如何修复 Perl 错误?
【问题讨论】:
-
当前版本的 Strawberry Perl 已经附带了必要的模块。只需使用更新的版本。
-
您误解了错误消息。 LWP 报告 LWP::Protocol::https 未安装,因为它在尝试加载 LWP::Protocol::https 时出错。该错误是 Net::SSLeay: Can't load 'C:/Strawberry/perl/site/lib/auto/Net/SSLeay/SSLeay.dll' 引发的错误。这意味着 Net::SSLeay 没有正确安装。
-
对不起,如果我的问题问得不好,我对 Perl 不熟悉。我已经安装了 Net-SSLeay-1.68。并且 Net::SSLeay 通过了 cpan 测试。
-
你这么说,但是当你这样做
use Net::SSLeay;时,你得到了Can't load 'C:/Strawberry/perl/site/lib/auto/Net/SSLeay/SSLeay.dll'。这意味着您在与运行测试的环境不同的环境中运行代码。 (在与某人交谈时包括@username,以便他们得到通知。) -
@ikegami 我在代码中没有
use Net::SSLeay。这是我的 Perl 脚本:gist.github.com/bearhagen/e969eaa23673e9484614
标签: json perl cpan finalbuilder slack-api