【问题标题】:ReferenceError: vis is not definedReferenceError: vis 未定义
【发布时间】:2020-12-10 15:48:54
【问题描述】:

我通过npm npm install vis-network安装了vis.js

并且已经在我的app.js 中需要它

try {
    require('vis-network');
} catch (e) { }

并在 laravel mix 中重新编译

npm run dev

但每当我实例化一个 vis 实例时,我总是在控制台上收到 vis is not define 错误..

<script>
let nodes = new vis.DataSet(_nodes),
    edges = new vis.DataSet(_connections);

...
let network = new vis.Network(container, { nodes: nodes, edges: edges }, _options);
</script>

我错过了什么?

【问题讨论】:

  • 我假设您需要const vis = require('vis-network');
  • 嗯,没有。我只需要require('vis-network')
  • 在你使用的文件中试试上面一行 vis
  • 嗯,现在给我require is not defined
  • 您能否在需要vis 的地方包含代码部分? (有更多的上下文)

标签: javascript vis.js


【解决方案1】:

尝试将其添加到窗口对象中,以逃避节点封装上下文。

try {
    window.vis = require('vis-network/standalone');
} catch (e) {
    console.error(e);
}

【讨论】:

  • require 未在浏览器中定义。
  • vis.DataSet is not a constructor 这样做后我收到了这个
  • 这修复了它。看起来我需要 require('vis-network/standalone') 而不是 vis-network 才能解决 vis.DataSet is not a constructor 错误
  • @DarthVader 谢谢,我已将其编辑为答案。
【解决方案2】:

您还需要捆绑您的应用程序以将 commonJS 模块转换为浏览器支持的代码。

看到这个问题:How to use npm installed package in laravel application?

【讨论】:

  • 是的,这正是我所做的......当然我在更改我的 app.js 以重新编译它之后运行了npm run dev
猜你喜欢
  • 2012-08-24
  • 2015-10-04
  • 2017-04-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多