我目前正在運行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