首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未定义protobuf.js运行时错误$protobuf

未定义protobuf.js运行时错误$protobuf
EN

Stack Overflow用户
提问于 2017-03-06 09:33:27
回答 2查看 1.9K关注 0票数 3

我在一个protobuf.js项目中使用ionic2。我有一个有效的.proto文件,我首先通过以下方法将其转换为静态javascript文件:

代码语言:javascript
复制
pbjs -t static databaseapi.proto > databaseapi.js

由于ionic2使用类型记录,我通过以下操作添加了一个d.ts文件:

代码语言:javascript
复制
pbts databaseapi.js > databaseapi.d.ts

我的应用程序会转储并运行,但最后会出现一个运行时错误:

运行时错误$protobuf未定义为

我知道这是因为编译后的协议缓冲区文件引用了变量$protobuf,但我不太清楚这个变量是在哪里定义的。我也不知道如何包含丢失的文件,因为它需要被js文件而不是ts文件引用。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-04-21 01:03:33

谢谢dcode,我的做法有点不同。对于其他阅读此问题的人,该解决方案是Ionic特定的,请参阅dcode的答案,以获得更好的通用解决方案。

最后,我将对编译后的js文件的引用添加到Cordova的index.html中,如下所示:

代码语言:javascript
复制
<script src="lib/protobuf.js"></script>
<script>$protobuf = protobuf;</script>
<script src="js/databaseapi.js"></script>
<script> $database = $root.com.database.api.v1; </script>

databaseapi.js是已编译的原型文件的名称。

票数 0
EN

Stack Overflow用户

发布于 2017-03-07 15:36:43

-t static只创建原始代码,但不将其包装为模块(因此不定义$protobuf依赖项)。

要将其包装为一个模块,请使用-t static-module并通过-w default|commonjs|amd|es6选择所需的格式。default使用一个通用的包装器,它可以与AMD、CommonJS和全局变量一起工作。

有关所有命令行选项,请参见:https://github.com/dcodeIO/protobuf.js#command-line

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42622000

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档