【问题标题】:Neo4j official javascript driver with electron带有电子的 Neo4j 官方 javascript 驱动程序
【发布时间】:2016-05-26 15:47:13
【问题描述】:

我试图使用 electron 和 Neo4j 官方 npm 打包驱动程序为 Neo4j 创建一个示例演示应用程序,我的代码非常基础,但是一旦我尝试打开会话就会出错。这段代码写在 index.html 中的一个 script 标签中:

require('./renderer.js')
var neo4j = require('neo4j-driver').v1;

var driver = neo4j.driver("bolt://localhost", neo4j.auth.basic("neo4j", "neo4j"));

var session = driver.session();

在最后一次调用时,这是我在控制台中收到的错误消息:

Uncaught Error: Don't know how to send buffer: NodeBuffer( position=0 )60 60 b0 17 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 

有人遇到过这样的问题吗?

【问题讨论】:

    标签: javascript node.js neo4j driver electron


    【解决方案1】:

    我使用 electron 和 Vuejs 创建了一个应用程序,非常简单,它运行一个简单的密码查询并打印到浏览器。

    首先,您必须要求脚本作为网络浏览器资源:

    <script type="text/javascript" src="static/neo4j-web.js"></script>
    

    这将在未来改变,neo4j 意识到这一点

    其次,此资源需要在您的资产中,或者您可以使用 neo4j cdn

    然后我就可以使用带有全局导入的 neo4j 了:

    var driver = global.neo4j.v1.driver('bolt://localhost')
            var session = driver.session()
            session.run('CREATE (n:Electron) RETURN n')
              .subscribe({
                onNext: function (record) {
                  console.log(record._fields)
                },
                onCompleted: function () {
                  session.close()
                },
                onError: function (error) {
                  console.log(error)
                }
              })
    

    你需要在你的 webpack 配置中允许 neo4j 外部组件:

    externals: {
      'neo4j': 'neo4j'
      }
    

    你可以在这里看到我的回购:https://github.com/ikwattro/electron-vue-test

    正如我所说,这是一个非常好的世界,但工作正常。

    【讨论】:

      【解决方案2】:

      问题似乎是驱动程序检测到它正在浏览器中运行并尝试使用 websocket 通道。

      你可以通过改变这个来“强制”驱动使用节点通道:

      var Channel = undefined;
      if (_chWebsocket2["default"].available) {
        Channel = _chWebsocket2["default"].channel;
      } else if (_chNode2["default"].available) {
        Channel = _chNode2["default"].channel;
      } else {
        throw (0, _error.newError)("Fatal: No compatible transport available. Need to run on a platform with the WebSocket API.");
      }
      

      var Channel = undefined;
      Channel = _chNode.channel;
      

      在这个文件中:

      https://github.com/neo4j/neo4j-javascript-driver/blob/1.1/lib/v1/internal/connector.js#L64

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-02-15
        • 2020-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多