2017-03-09 8 views
0

내 Magento2 프로젝트에 다음 requirejs 설정이 : 나는 예에서 주석 경로가 동적으로이 목록부터 해결해야한다requirejs의 하위 폴더를 제외하려면 어떻게해야합니까?

define([ 
    "jquery" 
    ], function (jq) { 
    return jq.noConflict(); 
}); 

var config = { 
    map: { 
    '*': { 
     productView: 'Mediahuis_Base/js/product-view', 
     refreshCartScript: 'Mediahuis_Base/js/checkout/refresh-cart', 
     addressCompletion: 'Mediahuis_Base/js/address/completion', 
     addressCompletionHelper: 'Mediahuis_Base/js/address/completion-helper', 
     prepareCheckoutShipping: 'Mediahuis_Base/js/checkout/shipping-prepare', 
     jquery: 'js/jquery-private', 
     /*'jquery/jquery.mobile.custom': 'jquery/jquery.mobile.custom', 
     'jquery/jquery-migrate': 'jquery/jquery-migrate', 
     'jquery/jquery-storageapi': 'jquery/jquery-storageapi', 
     'jquery/ui': 'jquery/ui', 
     'jquery/jquery.cookie': 'jquery/jquery.cookie', 
     'jquery/validate': 'jquery/validate', 
     'jquery/jquery-ui-timepicker-addon': 'jquery/jquery-ui-timepicker-addon', 
     'jquery/jquery.metadata': 'jquery/jquery.metadata'/**/ 
    }, 
    'js/jquery-private': { 
     jquery: 'jquery' 
    } 
    } 
}; 

JS/JQuery와 - private.js 것 항상 변경하십시오 (공급 업체 파일). 내가 수동으로 추가하지 않는 경우

, 나는 다음과 같은 오류가 발생합니다 : catch되지 않은 오류 : 스크립트 오류 : JS/JQuery와 - 개인 /이 경우 JQuery와-UI-timepicker-부가

, 실제 파일은 js/jquery/jquery-ui-timepicker-addon에 있습니다. 보시다시피 jquery /는 jquery-private /에서 해결되고 있습니다.

이 해결 방법의 이유는 noConflict 버전으로 필요한 jquery 모듈을 삽입해야하기 때문입니다. 그것 없이는 다음 오류가 발생합니다. Uncaught TypeError : $ .widget이 함수가 아닙니다. 내가 공급 업체 JS 파일을 필요로하고 있습니다 때문에, 나는

답변

0

난 정말 아직 내 문제에 대한 완벽한 해결책을 발견하지 않았습니다 ... 거기에 소스를 변경할 수 없습니다,하지만 난 그것을 이런 식으로 해결 :

var config = { 
    map: { 
    '*': { 
     ... 
    }, 
    'js/jquery-private': { 
     jquery: 'jquery' 
    } 
    } 
}; 

(function (global) { 
    require.baseLoad = require.load; 
    require.load = function (context, moduleName, url) { 
    if (url.indexOf('/jquery.js') !== -1) { 
     url = url.replace('/jquery.js', '/js/jquery-private.js'); 
    } 
    require.baseLoad(context, moduleName, url); 
    }; 
}(this));