【问题标题】:Uncaught Error: Module name "aaa_bbb_1_pb" has not been loaded yet for context: _. Use require([])未捕获的错误:尚未为上下文加载模块名称“aaa_bbb_1_pb”:_。使用要求([])
【发布时间】:2017-02-21 06:01:20
【问题描述】:

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

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 代码

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

<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 的新手。请提供任何参考。

【问题讨论】:

    标签: javascript node.js requirejs node-modules


    【解决方案1】:

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

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

    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() 仍然不起作用。使用模块的目标之一是避免将所有内容都放在全局空间中。所以onCreate 不能被onclick 访问。使其可访问的最小方法是在定义函数后添加window.onCreate = onCreate,但我不建议这样做。您应该添加一个导出函数,您可以在初始化时使用按钮对象调用该函数并将调用addEventListener("click", onCreate),或者该模块可以搜索页面上的特定元素(通过ID、类名等)并调用@987654332 @。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-08
      • 2021-06-04
      • 2016-11-16
      • 1970-01-01
      • 2022-09-26
      • 1970-01-01
      • 1970-01-01
      • 2020-06-03
      相关资源
      最近更新 更多