我目前正在运行nodejs服务器。情况是这样的,我有一个服务文件夹,在文件夹里面,有很多service.js文件。在每项服务中,我将导出服务及其功能。 例如。nodejs服务器无法导出服务
var service = {};
service.fun1 = fun1;
service.fun2 = fun2;
...
module.exports = service;
function fun1(params) { ... };
现在,我必须要求另一个服务。例如,每当我需要从其他服务中使用的用户服务,我会做
var userService = require('services/user.service');
,然后我可以用它作为
userService.fun1(params).then(function(data){ ... });
我有一个优惠券服务需要要求用户服务。在优惠券服务中,我可以要求除用户服务之外的所有其他服务。而我得到这个错误
TypeError: userService.getById is not a function
所以我尽量控制台日志userService,它是{},这意味着它不会导出莫名其妙。但是从其他服务中,我可以以相同的方式要求用户服务,并且工作正常。
所以我试图要求优惠券服务中的其他服务,所有工作。所以只有优惠券服务中的用户服务才会给出错误。
这让我发疯。
------ -------更新
的引发错误的代码是从coupon_service.js:
var userService = require('services/user.service');
function getAllCoupons(params) {
var deferred = Q.defer();
if (params.field1 && params.field2 && params.field3 && params.start_index && params.page_length) {
userService.fun1(params.field2).then(function(data) {
if (data.response1 == params.expected1 && helper.userIsAdmin(params.response1, data.validate)) {
deferred.resolve(getAll(params.field2, params.start_index, params.page_length, params.filter));
} else {
deferred.resolve(getCoupons(params));
}
});
} else {
deferred.resolve(getCoupons(params));
}
return deferred.promise;
}
来自两个文件的一些代码会有所帮助。 –
在我看来,问题可能在于优惠券服务代码。你可能想要发布实际抛出错误的代码。想到一些想法:可以直接或间接覆盖变量“userService”吗?是否指向“userService”的相对路径指向同一个文件? – souldzin
的路径应该是正确的,因为我可以从同一个文件夹中的其他服务请求userService。 – leo277