node.js - 如何在 Node.js 中处理这个问题

标签 node.js kinvey

目前我正在这样做:

文件名:userOrder.js

const paymentGateway = require('./paymentGateway');

module.exports = {

        save: function() {

            // save user order record  
            return paymentGateway.makePayment();      

        },

        update: function() {

            // update user order record

        }

}

文件名: paymentGateway.js

const payment = require('./payment');

module.exports = {

    makePayment: function() {

        // make payment
        return payment.save();

    }

}

文件名: payment.js

const userOrder = require('./userOrder');

module.exports = {

        save: function() {

            // save payment record
            return userOrder.update();

        }

}

返回 userOrder.update(); -> 此行给出错误“TypeError: userOrder.update is not a function

最佳答案

这是因为您在 payment.jsuserOrder.js 之间使用循环引用。您可以通过在调用 require 之前为 module.exports 分配一个值来解决此问题,如下所示:

userOrder.js

const userOrder = function() { };

module.exports = userOrder;

const paymentGateway = require('./paymentGateway');

userOrder.save = function() {
    // save user order record  
    return paymentGateway.makePayment(); 
}

userOrder.update = function() {
    // update user order record
}

付款.js

const payment = function() {};

module.exports = payment;

const userOrder = require('./userOrder');

payment.save = function() {
    // save payment record
    return userOrder.update();
}

无需对 paymentGateway.js 进行任何更改,因为这不是循环 require 的一部分。

关于node.js - 如何在 Node.js 中处理这个问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44655215/

相关文章:

javascript - Firebase 云函数中的嵌套 HTTP 请求

ios - 如何在 Swift 2.0 中使用异步方法更新 tableviewcell?

android - 使用 Delphi xe7 从 Windows 操作系统向 Android 设备发送文本

mysql - 如何从 mysql 数据库中存储的数量中减去一个数字

javascript - 上传图片到tinyMCE

android - 内容适配器和异步回调

java - Android Kinvey java.lang.NoClassDefFoundError

javascript - 为什么在 mongoose 查询之前使用 process.nextTick()?

node.js - 找不到带有 Nightmare 和nodejs的模块 'browser-window'