1

当我在 HTML 页面上添加(挂载)2 个组件时,我收到“Uncaught TypeError: Cannot read property 'class' of undefined at mount$1”错误

<body>
<script src="https://cdn.jsdelivr.net/npm/riot@3.13/riot+compiler.js"> 
</script>
<script type="riot/tag">
<dict2-app>dict2-app</dict2-app>
</script>
<dict2-app></dict2-app>
<script>
riot.mount('dict2-app')
</script>
<script type="riot/tag">
<dict3-app>dict3-app</dict3-app>
</script>
<dict3-app></dict3-app>
<script>
riot.mount('dict3-app')
</script>
</body>

当我评论 //riot.mount('dict{X}-app') 之一时,代码可以正常工作

4

2 回答 2

0

Uncaught TypeError: Cannot read property 'class' of undefined at mount$1是无用的错误消息,意思是“riot 不知道具有此名称的组件”。检查以确保您包含两个模板。将console.log文件添加到每个文件并读取已编译的源文件。如果日志没有出现或出现在错误之后,那就是你的问题。

最糟糕的是,我正在努力解决的问题是,如果你以某种方式包括两次暴动。基本上,第一个副本获取注册的标签,第二个副本取消注册它们(或更准确地说,用不知道标签的副本替换 window.riot)。

编辑:

我尝试了您的代码示例并得到了同样的错误。它适用于其他答案 ( riot.mount('*')),也适用于:

  <script>
    riot.mount('dict2-app')
    riot.mount('dict3-app')
  </script>

它也适用于将脚本标签放在最后。

<body>
  <script src="https://cdn.jsdelivr.net/npm/riot@3.13/riot+compiler.js">
  </script>
  <script type="riot/tag">
    <dict2-app>dict2-app</dict2-app>
  </script>
  <dict2-app></dict2-app>
  <script type="riot/tag">
    <dict3-app>dict3-app</dict3-app>
  </script>
  <dict3-app></dict3-app>
  <script>
    riot.mount('dict2-app')
  </script>
  <script>
    riot.mount('dict3-app')
  </script>
</body>

不知道为什么这是一个问题。

于 2019-07-30T17:49:12.943 回答
0

你不需要调用多个 riot.mount,你只需要一个,如下所示:

riot.mount('*')

您的代码将是:

<body>
    <script src="https://cdn.jsdelivr.net/npm/riot@3.13/riot+compiler.js"> 
    </script>
    <dict2-app>dict2-app</dict2-app>
    <dict2-app></dict2-app>
    <dict3-app>dict3-app</dict3-app>
    <dict3-app></dict3-app>
    <script>
        riot.mount('*')
    </script>
</body>
于 2019-07-26T15:39:26.590 回答