Проблема с использованием Maps и Rollup - сгенерированный код содержит ошибки - PullRequest
0 голосов
/ 06 июля 2019

Я использую Rollup, но сгенерированный пакет не работает вообще.

Это мой оригинальный код:

const selectableCarBones = [
  "door_dside_f", // left door front
  "door_dside_r", // left door back
  "door_pside_f", // right door front
  "door_pside_r", // right door back
  "boot" // trunk
];

function selectVehicle(vehicleId: number, entityPos: alt.Vector3, selectionWorldPos: alt.Vector3, hitEntitySurfacePos: alt.Vector3) {
  let willDrawSprite = false;

  if (natives.isThisModelACar(natives.getEntityModel(vehicleId))) {
    // get bone of vehicle
    let bonesWithDistance = new Map(selectableCarBones.map(bone => {
      let bonePos = natives.getWorldPositionOfEntityBone(vehicleId, natives.getEntityBoneIndexByName(vehicleId, bone));
      let distance = natives.getDistanceBetweenCoords(localPlayer.pos.x, localPlayer.pos.y, localPlayer.pos.z, bonePos.x, bonePos.y, bonePos.z, false);

      return [
        bone,
        {
          distance,
          pos: bonePos
        }];
    }));

    let bonesDistanceSorted = new Map([...bonesWithDistance].sort((a, b) => {
      return a[1].distance - b[1].distance;
    }));

    let firstItem = bonesDistanceSorted.entries().next().value;

    //...
  }
}

А вот сгенерированный из выходного файла накопительного пакета:

var selectableCarBones = [
  "door_dside_f",
  "door_dside_r",
  "door_pside_f",
  "door_pside_r",
  "boot" // trunk
];

function selectVehicle(vehicleId, entityPos, selectionWorldPos, hitEntitySurfacePos) {
  var willDrawSprite = false;
  if (isThisModelACar(getEntityModel(vehicleId))) {
    // get bone of vehicle
    var bonesWithDistance = new Map(selectableCarBones.map(function(bone) {
      var bonePos = getWorldPositionOfEntityBone(vehicleId, getEntityBoneIndexByName(vehicleId, bone));
      var distance = getDistanceBetweenCoords(localPlayer$a.pos.x, localPlayer$a.pos.y, localPlayer$a.pos.z, bonePos.x, bonePos.y, bonePos.z, false);
      return [
        bone,
        {
          distance: distance,
          pos: bonePos
        }
      ];
    }));
    var bonesDistanceSorted = new Map(bonesWithDistance.slice().sort(function(a, b) {
      return a[1].distance - b[1].distance;
    }));
    var firstItem = bonesDistanceSorted.entries().next().value;

    // ...
  }
}

Проблема в строке 24: bonesWithDistance.slice()

Сообщение об ошибке:

[18:39:15][Error] [V8] Exception at levelv:build/client.bundle.js:1245
[18:39:15][Error]           var bonesDistanceSorted = new Map(bonesWithDistance.slice().sort(function (a, b) {
[18:39:15][Error]   TypeError: bonesWithDistance.slice is not a function
    at selectVehicle (build/client.bundle.js:1245:61)
    at Object.updateSelection (build/client.bundle.js:1210:21)
    at build/client.bundle.js:1129:29

Буду признателен за любую помощь:)

...