I am working on the checkout page store locator popup modal, I have tried to mixins for the pickup-locations-service.js file to override core methods from the javascript file.
The error TypeError: target.extend is not a function
in Magento 2 often occurs due to issues with JavaScript mixins declaration.
Due to incorrect syntax in my custom mixins javascript file, I got the error in the browser console file,
target.extend is not a function.
This error came due to invalid syntax in your mixins file. you need to fix the mixins JS file to resolve that error.
I have created mixins syntax in the requirejs-config.js
file like this,
var config = { config: { mixins: { 'Magento_InventoryInStorePickupFrontend/js/model/pickup-locations-service': { 'Rbj_StorePickupModal/js/model/pickup-locations-service-mixin': true } } } };
Magento_InventoryInStorePickupFrontend/js/model/pickup-locations-service
javascript file has a getLocation()
method that needs to be overridden in my custom module.
This is the correct way to fix the above target.extend issue,
Create custom mixins in the module called Rbj_StorePickupModal,
Rbj_StorePickupModal/view/frontend/web/js/model/pickup-locations-service-mixin.js
file.
define([], function () { 'use strict'; return function (target) { target.getLocation = function (sourceCode) { // console.log(sourceCode); //WRITE_YOUR_CUSTOM_JAVASCRIPT_CODE } return target; }; });
With the above way, you can fix the browser console error.
By ensuring that the mixin is properly defined, and included and that the target is a valid Magento UI component, you can resolve the TypeError: target.extend is not a function
error.
You can also be interested to read about some mixins article.