首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >未捕获的错误:尚未为context:_加载模块名称"aaa_bbb_1_pb“。使用require([])

未捕获的错误:尚未为context:_加载模块名称"aaa_bbb_1_pb“。使用require([])
EN

Stack Overflow用户
提问于 2017-02-21 14:01:21
回答 1查看 603关注 0票数 0

我正在尝试使用require加载protobuf js文件,但在控制台上遇到以下异常。

代码语言:javascript
代码运行次数:0
运行
复制
02-21 11:18:06.445 9130-9130/com.p.protoextensiontest I/chromium: [INFO:CONSOLE(5)] "Uncaught Error: Module name "js/proto/data_main_1_pb" has not been loaded yet for context: _. Use require([])
http://requirejs.org/docs/errors.html#notloaded", source: file:///android_asset/www/js/require.js (5)
"Uncaught Error: Mismatched anonymous define() module: function p(){   

下面是我的index.js代码

代码语言:javascript
代码运行次数:0
运行
复制
var proto = require('js/proto/aaa_bbb_1_pb');

function onCreate(){
    console.log("in onCreate");
    parseProto();
}
function parseProto(){
    var name = proto.person.personName;
}

这是我的index.html

代码语言:javascript
代码运行次数:0
运行
复制
<head>
    <title> Testing proto extension</title>
    <script src="js/require.js"></script>
    <script src="js/google-protobuf.js"></script>
    <script src="js/index.js"></script>

</head>
<body>
    <button type="button"  onclick="onCreate()"> Create Data</button> <br/> 
</body>

我是javascript和node.js的新手。请提供任何参考资料。

EN

回答 1

Stack Overflow用户

发布于 2017-02-21 20:07:49

您在index.js中显示的模块是CommonJS格式。它没有包装器,只执行包含单个字符串参数的require调用。

但是,您正在使用RequireJS加载它。RequireJS是一个AMD模块加载器,而不是一个CommonJS模块加载器。您不必完全重写您的require调用来使用AMD格式(具有依赖项数组和回调的require调用),但您至少必须将模块的代码包装在define调用中,如下所示:

代码语言:javascript
代码运行次数:0
运行
复制
define(function (require) {
  var proto = require('js/proto/aaa_bbb_1_pb');

  function onCreate(){
      console.log("in onCreate");
      parseProto();
  }

  function parseProto(){
      var name = proto.person.personName;
  }
}

请注意,onclick=onCreate()仍然不能工作。使用模块的目标之一是避免将所有东西都放在全局空间中。因此onclick无法访问onCreate。使其可访问的最小方法是在函数的定义之后添加window.onCreate = onCreate,但我不建议这样做。您应该添加一个导出的函数,您可以使用button对象在初始化时调用该函数,该函数将调用addEventListener("click", onCreate),或者模块可以搜索页面上的特定元素(通过ID、类名等)并调用addEventListener("click", onCreate)

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

https://stackoverflow.com/questions/42359797

复制
相关文章

相似问题

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