我正在尝试获得与magento 2要求工作的常量联系人脚本。(我试着将它内联,但它会发生冲突并导致错误)
他们的脚本需要一个数组localizedErrMap和jQuery对象。
我创建了localizedErrMap.js
define([],
function(){
var localizedErrMap = {};
localizedErrMap['required'] = 'This field is required.';
localizedErrMap['ca'] = 'An unexpected error occurred while attempting to send email.';
localizedErrMap['email'] = 'Please enter your email address in name@email.com format.';
localizedErrMap['birthday'] = 'Please enter birthday in MM/DD format.';
localizedErrMap['anniversary'] = 'Please enter anniversary in MM/DD/YYYY format.';
localizedErrMap['custom_date'] = 'Please enter this date in MM/DD/YYYY format.';
localizedErrMap['list'] = 'Please select at least one email list.';
localizedErrMap['generic'] = 'This field is invalid.';
localizedErrMap['shared'] = 'Sorry, we could not complete your sign-up. Please contact us to resolve this.';
localizedErrMap['state_mismatch'] = 'Mismatched State/Province and Country.';
localizedErrMap['state_province'] = 'Select a state/province';
localizedErrMap['selectcountry'] = 'Select a country';
return localizedErrMap;
}
);做了这个requirejs-config.js
var config = {
"shim": {
"constantcontact": {
"deps":["jquery", "localizedErrMap"],
"depnames":["jQuery", "localizedErrMap"]
}
},
"paths": {
"localizedErrMap": "js/localizedErrMap",
"constantcontact": "https://static.ctctcdn.com/h/contacts-embedded-signup-assets/1.0.2/js/signup-form"
}
};然后在页面中使用以下常量联系人形式调用它:
<script>
require(["constantcontact"]);
</script>他们的脚本抛出错误:
未定义的ReferenceError: localizedErrMap未定义
我不能修改他们的代码,因为它是离地的,我需要确保这个数组被传递到代码中。我做错了什么,如何确保数组被传递?
发布于 2017-07-28 09:34:36
您在shim中使用的shim数组不是RequireJS支持的东西。我能找到的唯一参考是在问题报告中,支持这样一个选项的人https://github.com/requirejs/requirejs/issues/1160#issuecomment-47681204,但这从来没有实现。
它看起来像constantcontact,它不是一个AMD模块,它希望在全球空间中找到一个符号localizedErrMap。一般来说,您有几种选择:
define代码周围添加一个constantcontact调用,从而有效地将其转换为AMD-模块。wrapShim选项r.js对此非常有用。但是,您说您不能修改它,所以这个选项就不在表中了。localizedErrMap。对于使用不是AMD库的库,这种泄漏有时是一个可行的解决方案。我宁愿避免它,但在某些情况下,它是无法避免的。发布于 2017-07-28 10:04:29
我是通过将它添加到CMS页面的内联中来工作的。
<script type="text/javascript">
var localizedErrMap = {};
localizedErrMap['required'] = 'This field is required.';
localizedErrMap['ca'] = 'An unexpected error occurred while attempting to send email.';
localizedErrMap['email'] = 'Please enter your email address in name@email.com format.';
localizedErrMap['birthday'] = 'Please enter birthday in MM/DD format.';
localizedErrMap['anniversary'] = 'Please enter anniversary in MM/DD/YYYY format.';
localizedErrMap['custom_date'] = 'Please enter this date in MM/DD/YYYY format.';
localizedErrMap['list'] = 'Please select at least one email list.';
localizedErrMap['generic'] = 'This field is invalid.';
localizedErrMap['shared'] = 'Sorry, we could not complete your sign-up. Please contact us to resolve this.';
localizedErrMap['state_mismatch'] = 'Mismatched State/Province and Country.';
localizedErrMap['state_province'] = 'Select a state/province';
localizedErrMap['selectcountry'] = 'Select a country';
var postURL = 'https://visitor2.constantcontact.com/api/signup';
</script>
<script>
require(["jquery"], function($){
$.getScript('https://static.ctctcdn.com/h/contacts-embedded-signup-assets/1.0.2/js/signup-form.js');
});
</script>https://stackoverflow.com/questions/45337087
复制相似问题