未定义缓冲区(react-native)

whlutmcx  于 2023-05-01  发布在  React
关注(0)|答案(1)|浏览(161)

我不能在react-native应用程序(使用expo工具构建)中使用buffer。
我有一个十六进制的地理点值,例如-〉0101000020E61000003868AF3E1E0A494046B3B27DC8F73640,我试图用以下代码将其解码为经度和纬度-〉

import WktParser from 'terraformer-wkt-parser';
import wkx from 'wkx';
import wellknown from 'wellknown';
import { Buffer } from 'buffer';

  const wkb = new Buffer.from(point, 'hex');
  const wkt = wkx.Geometry.parse(wkb).toWkt();
  const parsedPoint = WktParser.parse(wellknown.stringify(wkt));
  const longitude = parseFloat(parsedPoint.coordinates[0]);
  const latitude = parseFloat(parsedPoint.coordinates[1]);

  return [latitude, longitude];

但是在包中遇到这样的缓冲区错误-〉ReferenceError: Can't find variable: Buffer。json我有-〉

"terraformer-wkt-parser": "^1.2.1",
    "util": "^0.12.5",
    "wellknown": "^0.5.0",
    "wkx": "^0.5.0"
    "buffer": "^6.0.3",
    "expo": "~47.0.12",

我也试过其他的图书馆,结果也是一样。先谢谢你的帮助🙂

nvbavucw

nvbavucw1#

要使用Expo中的缓冲区模块,必须使用expo install buffer命令安装它。
但是,由于Expo默认不支持缓冲区模块,执行expo install buffer命令可能会导致错误,例如“在当前配置的寄存器中未找到包‘缓冲区’”。
在这种情况下,您可以通过安装react-native-crypto包来使用Buffer API。
但是,由于Expo不支持react-native-crypto,您可能需要通过弹出Expo来使用裸工作流。
编辑
我的答案不是关于buffer,我写了额外的答案@matek评论问题。
可以使用base64编码

  • Exmaple
import { encode, decode } from 'base-64';

// Encoding coordinate values
const lat = 37.7749;
const lng = -122.4194;
const encodedLatLng = encode(`${lat},${lng}`);

// Decode encoded coordinate values
const decodedLatLng = decode(encodedLatLng).split(',');
const decodedLat = parseFloat(decodedLatLng[0]);
const decodedLng = parseFloat(decodedLatLng[1]);

相关问题