LWC जावास्क्रिप्ट लाइब्रेरी स्कोप त्रुटि

May 02 2020

मैं अपने जुड़े हुए कॉलबैक में सफलतापूर्वक तृतीय-पक्ष जावास्क्रिप्ट लाइब्रेरी लोड कर रहा हूं:

connectedCallback() {

    Promise.all([
        loadStyle(this, PCMilerCSS), 
        loadScript(this, PCMilerJavascript)
    ])
        .then(() => {
            debugger;
            this.initializeMap();
        })
        .catch(error => {
            debugger;
            LightningUtil.logError(this, error);
        });
}

लेकिन तब जब मैं इसे संदर्भित करने की कोशिश करता हूं:

initializeMap() {        

    ALKMaps.APIKey = this.credentials;
    alkmap = new ALKMaps.Map('map1', { displayProjection: new ALKMaps.Projection("EPSG:4326") });

    // map layers        

    _alkBasemap = new ALKMaps.Layer.BaseMap("ALK Maps", {style: ALKMaps.STYLE[this._baseLayerStyle]}, {displayInLayerSwitcher: false});                                                                                    
    let markerLayer = new ALKMaps.Layer.Markers("Marker Layer", {}, {displayInLayerSwitcher: true});                    
    let routingLayer = new ALKMaps.Layer.Routing("Routing Layer", {}, {displayInLayerSwitcher: true});                                                                                   
    let trafficLayer = new ALKMaps.Layer.Traffic("ALK LiveTraffic™", {}, {minScale: 500000, opacity: 0.5, displayInLayerSwitcher: true});        
    let weatherLayer = new ALKMaps.Layer.WeatherRadar("Radar Weather Layer",   {display: "radar"}, {opacity: 1, visibility: this._showWeatherOnOpen, displayInLayerSwitcher: true});

    alkmap.addLayers([alkBasemap, trafficLayer, weatherLayer, routingLayer, markerLayer]);
    let switcherControl = new ALKMaps.Control.LayerSwitcher();
    alkmap.addControl(switcherControl);

…।

यह लाइन एक पर चल रहा है क्योंकि यह ALKMaps नहीं पा सकता है:

ReferenceError: ALKMaps को AlkMap.initializeMap पर परिभाषित नहीं किया गया है

यहाँ ALKMaps के सामने और केंद्र के साथ जावास्क्रिप्ट पुस्तकालय का पहला भाग है। मेरे जेएस चोप्स कमजोर हैं तो मैं क्या याद कर रहा हूं? ALKMaps सुलभ क्यों नहीं है? आपकी सहायता के लिए धन्यवाद....

var ALKMaps = function () {var a function () {for (var a / / (^? (? /))) (ALKMaps.js) (\? | $) / i, b = document.getEgetByTagName (" लिपि "), ई, एफ =" ", जी =" ", एच =" ", आई = 0, जे = एल.लिफ्टिंग; ia.right;) b.lon- = a.getWidth ()} रिटर्न b} , CLASS_NAME: "ALKMaps.LonLat"}); ALKMaps.LonLat.fromString = function (a) {a = a.split (","), नया ALKMaps.LonLat लौटाएँ (एक [0], [1])}; ALMMaps.LonLat.fromArray = function (a); {var b = ALKMaps.Util.isArray (a); नया ALKMaps.LonLat लौटाएँ (b && a [0], b && a [1])}; ALKMaps.Lonatat.transformArray = function (a, b, c) {var d = [var d =] ], अगर (null! a && a Instof Array && 0g, f * g)} this.drawText (a.id, b, d)} और इस this.removeText (a.id); return c}}}, calculFeatureDx: function (a) , b) {this.featureDx = 0; if (b) {var c = b.getWidth (); this.featureDx = Math.round ((a.left + a.right) / 2- (this.extent)। बायाँ + this.extent.right) / 2) / c) * c}}, drawGeometry:function () {}, drawText: function () {}, removeText: function () {}, clear: function () {}, getFeatureIdFromEvent: function () {}, eraseFeatures: function (a) {ALKMaps.Util.isArray (a) || (a = [a]); (var b = 0, c = a.length; b

जवाब

1 sfdcfox May 04 2020 at 07:18

जावास्क्रिप्ट में, वैश्विक दायरे में रखी गई कोई भी चीज़ फ़ाइल के बाहर दिखाई नहीं देती है। इसका मतलब है कि:

var ALKMaps = ...

केवल एक वैरिएबल को परिभाषित करता है जिसका उपयोग शामिल फ़ाइल में किया जाता है, लेकिन इसके बाहर नहीं।

जब यह निर्यात किया जाता है तो चर उपलब्ध होता है (सभी आधुनिक ब्राउज़र):

export { ALKMaps }

या जब विश्व स्तर पर उपलब्ध (IE संगत):

window.ALKMaps = ALKMaps;

स्क्रिप्ट की सामग्री सुलभ होने के लिए उन चीजों में से एक होने की जरूरत है।