2017-12-27 4 views
0

헬퍼 라이브러리 (Dust.js)로 템플릿 라이브러리 작업을하고 있으며 헬퍼 라이브러리는 코드베이스 안에 디자인 패턴이 있습니다. 노드 V6에서노드 v8 (v8.9.3 이상)에서 commonjs는 모듈 작성 새 컨텍스트가 필요합니다

(function(root, factory) { 
    if (typeof define === 'function' && define.amd && define.amd.dust === true) { 
    define(['dust-linkedin'], factory); 
    } else if (typeof exports === 'object') { 
    module.exports = factory(require('dust-linkedin')); 
    // module.exports = factory; // <<--- This is working on v8 
    } else { 
    factory(root.dust); 
    } 
}(this, function (dust) { 
... 
}); 

, 공장을 수출 잘 작동하지만, V8 (v8.9.3)를 노드로 전환 이후 (('먼지 링크드')가 필요합니다) 우리는 공장을 변경, 도우미가 실행되지 않아요 참조 (require ('dust-linkedin')) to 도우미 라이브러리 안에있는 것들이 작동하기 시작합니다.

노드 v8에서 require ('dust-linkedin')을하면 새로운 컨텍스트/개체가 만들어지기 때문에 모든 도우미를 잃어 버릴 수 있습니까? commonjs에 변경 사항이 있습니까?

+0

수정되었습니다 나는 UMD 패턴을 사용하여 라이브러리의 수십를 사용했습니다. 노드 6에서 노드 8로 이동하는 데 문제가 없었습니다. 문제가 예상되는 내용과 * 대신 * 발생하는 내용을 자세히 편집하십시오. 예외가 발생하면 전체 스택 추적을 게시하십시오. 실제로 사람들이 문제를 재현 할 수 있도록 질문을 편집해야합니다 ([mcve]). "작품"이라고하는 주석 처리 된 코드는 옳은 일을하지 않습니다. – Louis

+0

루이가 지적 해 주심에 감사드립니다. 질문을 수정합니다 –

+0

[dust-helpers] (https://github.com/linkedin/dustjs-helpers/blob/master/dist/dust-helpers.js) 코드에는 'module .exports.registerWith = factory;'module.exports = factory (require ('dust-linkedin'));) 뒤에 있습니다.하지만 보여준 코드에는 없습니다. – Louis

답변

관련 문제