ข้อผิดพลาดขอบเขตไลบรารี LWC Javascript
ฉันกำลังโหลดไลบรารี Javascript ของบุคคลที่สามใน ConnectCallback ของฉันสำเร็จ:
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
นี่คือส่วนแรกของไลบรารี Javascript ที่มี ALKMaps ด้านหน้าและตรงกลาง JS สับของฉันอ่อนแอแล้วฉันพลาดอะไรไป? เหตุใดจึงไม่สามารถเข้าถึง ALKMaps ขอบคุณสำหรับความช่วยเหลือของคุณ....
var ALKMaps=function(){var a=function(){for(var a=/(^|(.?/))(ALKMaps.js)(\?|$)/i,b=document.getElementsByTagName(" script"),e,f="",g="",h="",i=0,j=b.length;ia.right;)b.lon-=a.getWidth()}return b} ,CLASS_NAME:"ALKmaps.LonLat"}); ALKMaps.LonLat.fromString=function(a){a=a.split(",");return ใหม่ ALKMaps.LonLat(a[0],a[1])};ALKMaps.LonLat.fromArray=function(a) {var b=ALKMaps.Util.isArray(a);ส่งคืน ALKMaps.LonLat(b&&a[0],b&&a[1])};ALKmaps.LonLat.transformArray=function(a,b,c){var d=[ ];if(null!=a&a instanceof Array&&0g,f*g)}this.drawText(a.id,b,d)}else this.removeText(a.id);return c}}},calculateFeatureDx:function(a) ,b){this.featureDx=0;if(b){var c=b.getWidth();this.featureDx=Math.round(((a.left+a.right)/2-(this.extent.) left+this.extent.right)/ 2)/c)*c}},drawGeometry:
คำตอบ
ใน JavaScript สิ่งใดก็ตามที่ไม่ได้วางไว้ในขอบเขตส่วนกลางจะไม่ปรากฏให้เห็นภายนอกไฟล์ นั่นหมายความว่า:
var ALKMaps = ...
 
          กำหนดเฉพาะตัวแปรที่ใช้ในไฟล์ที่รวมไว้เท่านั้น ไม่ใช่ภายนอก
สิ่งที่ทำให้ตัวแปรพร้อมใช้งานคือเมื่อมีการส่งออก (เบราว์เซอร์ที่ทันสมัยทั้งหมด):
export { ALKMaps }
 
          หรือเมื่อเปิดให้ใช้งานทั่วโลก (เข้ากันได้กับ IE):
window.ALKMaps = ALKMaps;
 
          สิ่งหนึ่งที่ต้องเกิดขึ้นเพื่อให้สามารถเข้าถึงเนื้อหาของสคริปต์ได้