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

我正在尝试使用电子和Neo4j官方npm打包的驱动程序为Neo4j创build一个示例演示应用程序,而且我的代码真的很基本,但是当我尝试打开一个会话时出现错误。 这段代码是用脚本标记写在index.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 

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

我创build了一个使用电子和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) } }) 

第三件事你需要在你的webpackconfiguration中允许neo4j externals:

 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