使用打字稿正确导入平面缓冲区

Posted

技术标签:

【中文标题】使用打字稿正确导入平面缓冲区【英文标题】:importing flatbuffers correctly with typescript 【发布时间】:2019-11-24 08:14:45 【问题描述】:

在打字稿中,我使用这样的平面缓冲区:

import flatbuffers from 'flatbuffers';
const builder = new flatbuffers.Builder(1);

然后我编译为 js 以与 react-native 一起使用:

const flatbuffers_1 = require("flatbuffers");
const builder = new flatbuffers_1.flatbuffers.Builder(1);

但我得到错误:

undefined is not an object (evaluating 'new flatbuffers_1.flatbuffers.Builder')

发生了什么?

【问题讨论】:

您是否尝试过以下操作:google.github.io/flatbuffers/… @Alvin 你有没有得到这个工作。我正在尝试在带有 React Native(Expo fork)的 javascript 中使用平面缓冲区。它在浏览器中运行良好,但在 android 上我像你一样收到undefined is not an object 错误。我的 flatbuffers 对象未定义...我检查了文件,我想知道这是否与使用 namespaceglobal 有关。 【参考方案1】:

不是直接的解决方案,但我使用的是更现代的方法/ ES6 导入,并且当我执行以下操作时它可以正常工作:

import flatbuffers from "flatbuffers";
const builder = new flatbuffers.Builder(6000);
// ...

虽然我不得不将生成类中的代码生成输出从import * as flatbuffers from 'flatbuffers'; 修改为import flatbuffers from 'flatbuffers';

【讨论】:

以上是关于使用打字稿正确导入平面缓冲区的主要内容,如果未能解决你的问题,请参考以下文章

使用打字稿在 Firebase Cloud 函数中动态导入类的正确方法是啥?

如何在打字稿中正确导入自定义类型

将节点模块导入角度打字稿/角度cli的正确方法是啥

开玩笑测试:在打字稿组件导入中找不到模块

类型上不存在属性。打字稿

打字稿定义无法导入Angular2