如何在节点js中处理这个问题

目前我正在这样做:

文件名: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不是一个函数

这是因为您在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 } 

payment.js

 const payment = function() {}; module.exports = payment; const userOrder = require('./userOrder'); payment.save = function() { // save payment record return userOrder.update(); } 

paymentGateway.js不需要更改,因为这不是通知require一部分。

试试:

 module.exports = { module.save = function() { // save user order record return payment.save(); }, module.update = function() { // update user order record } return module; } 
Interesting Posts