Neo4j官方的javascript驱动程序与电子



我试图使用 electron 和 Neo4j 官方 npm 打包驱动程序为 Neo4j 创建一个示例演示应用程序,我的代码真的非常基本,但是一旦我尝试打开会话,我就会收到错误。此代码编写在索引中.html脚本标记中:

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 

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

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

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

<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

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

问题似乎是驱动程序检测到它在浏览器中运行并尝试使用 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

相关内容

最新更新