Nodejs 关于Heroku线上模块问题,【错误被我找到】->我的参数拼写错误,擦=.=
Nodejs 关于Heroku线上模块问题,【错误被我找到】->我的参数拼写错误,擦=.=
####具体情况
最近看了本论坛关于微信API的帖子,自己利用它加上自己的爬虫做了一个微信订阅号的小机器人,就是根据用户的输入,它自动request其它服务器得到数据并返回给微信用户。前天都完成了,本地测试通过。可是部署到heroku上时,假如我在我的微信端输入:谷歌。它就会request其它服务器,但是这一跑程序就会挂。web页面会出现application error。
####相关代码
var resMsg = {},
contents = msg.content.toString();
if(contents === "help"){
resMsg = {
fromUserName:msg.toUserName,
toUserName:msg.fromUserName,
msgType:"text",
content:"您可以键入:历史上今天、热搜或者您想搜的关键中文词条。have a try :)",
funcFlag:0
}
weixin.sendMsg(resMsg);
}else if(contents === "历史上今天"){
pachong.getMainPage(function(err,hist_con,hot_son){
if(err){
resMsg = {
fromUserName:msg.toUserName,
toUserName:msg.fromUserName,
msgType:"text",
content:err.message,
funcFlag:0
};
}else{
resMsg = {
fromUserName:msg.toUserName,
toUserName:msg.fromUserName,
msgType:"text",
content:hist_con,
funcFlag:0
};
}
weixin.sendMsg(resMsg);
});
后面还有些代码这就不贴了,基本和上面差不多。
####代码说明
本项目用的是本论坛里一位朋友的微信APIweixin-api
,pachong
这是我自己写的一个文件,我测试过,没有错误!
####希望得到的解答
昨天email了论坛里面一位大牛,他给的解释就是:是不是模块线上有没有npm install。本人对heroku不是很熟悉,对这样的解释也是一头雾水。本项目就是用到了request
&& cheerio
&&weixin-api
这三个模块。我也琢磨了大半天了,想不出处理的办法,于是来这里,希望得到相关的解释和给同样遇到这样类似问题的朋友以经验。希望得到你们的帮助,Any help is much appreciated:)
Node.js 关于Heroku线上模块问题,【错误被我找到】->我的参数拼写错误,擦=.=
具体情况
最近使用微信API开发了一个小机器人,用于根据用户的输入请求其他服务器的数据,并返回给微信用户。本地测试通过后,将应用部署到Heroku上时遇到了问题。如果在微信端输入特定内容(如“谷歌”),程序会请求其他服务器,但在Heroku上运行时会失败,显示application error
。
相关代码
var resMsg = {},
contents = msg.content.toString();
if (contents === "help") {
resMsg = {
fromUserName: msg.toUserName,
toUserName: msg.fromUserName,
msgType: "text",
content: "您可以键入:历史上今天、热搜或者您想搜的关键中文词条。have a try :)",
funcFlag: 0
};
weixin.sendMsg(resMsg);
} else if (contents === "历史上今天") {
pachong.getMainPage(function (err, hist_con, hot_son) {
if (err) {
resMsg = {
fromUserName: msg.toUserName,
toUserName: msg.fromUserName,
msgType: "text",
content: err.message,
funcFlag: 0
};
} else {
resMsg = {
fromUserName: msg.toUserName,
toUserName: msg.fromUserName,
msgType: "text",
content: hist_con,
funcFlag: 0
};
}
weixin.sendMsg(resMsg);
});
}
代码说明
- 使用了本论坛里一位朋友的微信API
weixin-api
。 pachong
是我自己编写的一个文件,经过测试没有错误。- 项目中用到了
request
和cheerio
这两个模块。
错误分析与解决
昨天联系了一位大牛,他的建议是检查是否所有依赖项都已正确安装。经过排查发现,问题出在我的代码中一个参数拼写错误。例如,在某个函数调用中,我可能将参数名拼写错误,导致程序无法正常执行。
修正后的代码示例:
// 假设原本的错误是在这里
pachong.getMainPage(function (err, historyContent, hotSon) { // 修改参数名
if (err) {
resMsg = {
fromUserName: msg.toUserName,
toUserName: msg.fromUserName,
msgType: "text",
content: err.message,
funcFlag: 0
};
} else {
resMsg = {
fromUserName: msg.toUserName,
toUserName: msg.fromUserName,
msgType: "text",
content: historyContent, // 修改参数名
funcFlag: 0
};
}
weixin.sendMsg(resMsg);
});
最终结论
通过仔细检查代码中的拼写错误,我找到了问题所在。确保所有依赖项都已通过 npm install
安装,并且在Heroku上运行时不会出现因依赖缺失导致的错误。希望我的经验能帮助到遇到类似问题的朋友。
当我键入help时,有返回,并且没有错误。
看下heroku的log,会有错误提示啊,我把weixin-robot扔上去没问题
恩, 是我的错,刚刚已经找到错误了,是拼写错误,我勒个擦,,js就这个不好,debug成本高,现在进行最后的调试阶段了,待会就release了。;)
###错误地方
在的历史上今天的返回参数错了,应当是 hot_so
从你的描述来看,你在本地环境中测试时一切正常,但在Heroku线上环境运行时出现了问题。你提到已经找到了错误,是因为参数拼写错误。这里我假设错误可能是在调用pachong.getMainPage()
方法时传递的参数不正确或缺少某些参数。
为了确保你能顺利解决问题,以下是一些可能有用的建议和一个简单的示例代码片段,展示如何在Heroku中正确使用依赖模块:
示例代码
const express = require('express');
const request = require('request');
const cheerio = require('cheerio');
const app = express();
app.post('/wx', (req, res) => {
const { content } = req.body;
let resMsg = {};
if (content === 'help') {
resMsg = {
fromUserName: 'toUserName',
toUserName: 'fromUserName',
msgType: 'text',
content: '您可以键入:历史上今天、热搜或者您想搜的关键中文词条。have a try :)',
funcFlag: 0
};
// 发送消息
weixin.sendMsg(resMsg);
} else if (content === '历史上今天') {
pachong.getMainPage((err, hist_con) => {
if (err) {
resMsg = {
fromUserName: 'toUserName',
toUserName: 'fromUserName',
msgType: 'text',
content: err.message,
funcFlag: 0
};
} else {
resMsg = {
fromUserName: 'toUserName',
toUserName: 'fromUserName',
msgType: 'text',
content: hist_con,
funcFlag: 0
};
}
// 发送消息
weixin.sendMsg(resMsg);
});
}
res.json({ status: 'success' });
});
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => console.log(`Server running on port ${PORT}`));
注意事项
- 检查参数: 确保
pachong.getMainPage()
函数调用时传递的参数与预期一致。 - 依赖安装: 在Heroku部署时,确保所有需要的依赖项都已经通过
package.json
文件正确安装。你可以添加package.json
文件来明确指定这些依赖项。 - 日志检查: Heroku提供了详细的日志查看功能,可以通过
heroku logs --tail
命令实时查看应用的日志信息,帮助定位错误。
希望这些建议对你有所帮助!如果还有其他问题,请随时告知。