2017-09-21 5 views
0

현재 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){ ... }); 

로 사용할 수 있습니다 서비스. 쿠폰 서비스에서 나는 사용자 서비스를 제외하고 다른 모든 서비스를 요구할 수 있습니다. 그리고이 오류가 있습니다.

그래서 userService의 로그를 기록하려고합니다. 즉, {}이므로 어떤 식 으로든 내보내지지 않습니다. 하지만 다른 서비스에서 나는 같은 방식으로 사용자 서비스를 요구할 수 있으며 정상적으로 작동합니다.

그래서 쿠폰 서비스에 다른 서비스가 필요하며 모두 작동하고 있습니다. 따라서 쿠폰 서비스의 사용자 서비스 만 오류를 제공합니다.

이것은 나를 미치게합니다.

------ 갱신 -------

(가) 오류를 발생 코드는 coupon_service.js에서입니다 : 같은 /services/ 폴더에 모두 서비스를 가정

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; 
    } 
+0

두 파일에서 더 많은 코드가 도움이 될 것입니다. –

+0

아마도이 문제는 쿠폰 서비스 코드에 있다고 생각됩니다. 실제로 오류가 발생하는 코드를 게시 할 수 있습니다. 마음에 떠오르는 생각 : 변수 "userService"를 직접 또는 간접적으로 덮어 쓸 수 있습니까? "userService"에 대한 상대 경로가 같은 파일을 가리키고 있습니까? – souldzin

+0

같은 폴더의 다른 서비스에서 userService를 요구할 수 있기 때문에 경로가 정확해야합니다. – leo277

답변

0

있습니다

var userService = require('./user.service');

가져온 서비스에 대한 경로 가져 오기 서비스를 기준으로해야하기 때문에 : 당신은 할 수 있어야 .

+0

방금이 방법을 시도했지만 동일한 오류 메시지가 표시되었습니다. 캐시 문제 일 수 있다고 생각했기 때문에 캐시를 지우지 만 오류는 계속 발생합니다. – leo277