node.js - TypeError:req.post 不是函数
问题描述
在注册用户后,在我的server.js下注册路径下,我想发送验证电子邮件和验证短信。但是smsService 请求会引发错误。我不确定出了什么问题。
你能帮我找出错误吗?
server.js:
app.post('/signup-user', upload.single('avatar'), (req, res) => {
let sAvatarImagePath = req.file.path.split("public/").pop()
let token = jwt.sign({
username: req.body.email,
}, 'supersecret', {
expiresIn: 240
});
user.createUser(req.body, sAvatarImagePath, (err, jResult) => {
if (err) {
return res.send(jResult)
}
mailer.sendEmail(res, req.body, token)
smsService.sendSms(req, res, (err, jResult) => {
if (err) {
return res.send(jResult)
}
})
return
})
})
短信服务.js:
var smsService = {}
smsService.sendSms = (req, res, fCallback) => {
const sUrl = 'http://smses.io/api-send-sms.php';
const sToken = '$2y$10$//Qx9DsrDCIeNeWIjr1V.uWRR3m9raVGJNN4iDRZsxNDxknvCJsPC';
let sRecipientNbr = req.body.mobile_number;
let sMessage = '5678'
console.log('CALLING SMS API...', sRecipientNbr);
req.post(
sUrl, {
form: {
action: 'SEND',
mobile: sRecipientNbr,
message: sMessage,
apiToken: sToken,
},
},
(err, res, body) => {
if (err) {
console.log('ERROR WHEN CALLING SMS API', err);
return fCallback({
error: true,
message: 'System is currently unavailable'
});
}
var jResponse = safeJsonParse(body);
console.log('SMS API return:', jResponse);
if (jResponse.status != 'ok') {
console.error('SMS API RETURNED ERROR', err, jResponse);
return fCallback({
error: true,
message: 'System is currently unavailable'
});
}
return fCallback(false);
},
);
}
module.exports = smsService
解决方案
我认为您对express Request object和NodeJS request module感到困惑。您需要安装NodeJS 请求模块来发出外部 http 请求
npm install request --save
然后在服务中使用smsService.js
var request = require('request');
var smsService = {}
smsService.sendSms = (req, res, fCallback) => {
const sUrl = 'http://smses.io/api-send-sms.php';
const sToken = '$2y$10$//Qx9DsrDCIeNeWIjr1V.uWRR3m9raVGJNN4iDRZsxNDxknvCJsPC';
let sRecipientNbr = req.body.mobile_number;
let sMessage = '5678'
console.log('CALLING SMS API...', sRecipientNbr);
request.post(
sUrl, {
form: {
action: 'SEND',
mobile: sRecipientNbr,
message: sMessage,
apiToken: sToken,
},
},
(err, res, body) => {
if (err) {
console.log('ERROR WHEN CALLING SMS API', err);
return fCallback({
error: true,
message: 'System is currently unavailable'
});
}
var jResponse = safeJsonParse(body);
console.log('SMS API return:', jResponse);
if (jResponse.status != 'ok') {
console.error('SMS API RETURNED ERROR', err, jResponse);
return fCallback({
error: true,
message: 'System is currently unavailable'
});
}
return fCallback(false);
},
);
}
module.exports = smsService
我希望这能帮到您
推荐阅读
- security - SS4 被锁定,密码重置不会持续
- java - 如何在 SpringBoot 中将管理员电子邮件作为列表返回
- google-cloud-platform - 如何将谷歌云虚拟机链接到实例计划?
- c# - Amazon QuickSight 创建数据集方法的 .Net api 访问被拒绝
- javascript - 删除类时CSS关键帧动画反转
- r - 跨行检测 0 个值
- javascript - 关于 TypeScript Promise 返回类型的困惑
- azure - 选择用于可视化和分析的最佳 Azure 存储
- apache - 在 Ubuntu VPS 上使用 mo_wsgi 部署我的 Flask 应用程序时出现错误 500
- flutter - 后台任务冻结应用屏幕 [Flutter]