首页 > 解决方案 > TypeError:invNum.next 不是函数

问题描述

我试过这段代码:

const invNum = require('invoice-number');

router.post('/checkout', async (req, res, next) => {

if (!req.session.cart) {
    return res.redirect('/pos/');
}

var saleList = Sale.find().sort({ _id: -1 }).limit(1); // removed (err, data)=>{} to simply view it is working tested already
var settings = await Setting.find({}); // removed try and catch to simply view it is working tested already
var ticketNumber;

ticketNumber = !saleList ? invNum.next('0000000') : invNum.next(saleList.ticket_number);

var sale = new Sale({
    ticket_number:ticketNumber,
    cart: req.session.cart,
    created_at: new Date()
});

sale.save((err, product) => {
    createReceipt(settings, req.session.cart, "receipts/"+ticketNumber+".pdf");
    req.session.cart = null;
    res.redirect('/pos/');
});

});

我收到了这个错误:

TypeError: invNum.next is not a function

问题在于 invNum.next()。invNum.next() 是一个 Node.js 模块,用于生成从 npm 顺序安装的发票编号。

例子:

invNum.next('2017/08/ABC001')
// => 2017/08/ABC002

我已经通过尝试 Promises 或 await async 函数尝试了以前的 stackoverflow 帖子中的建议,以使此代码正常工作。希望您可以提供帮助或提出建议。谢谢你。

标签: node.jspromise

解决方案


发票编号模块版本有问题。在 npm 中它显示为 1.0.6,但在 GitHub 存储库中,它在 package.json 文件中有 1.0.5。 https://github.com/amindia/invoice-number

我已经从 Github 存储库中测试了这个模块,它工作正常。请从给定的链接中获取此模块的源代码,它将正常工作。


推荐阅读