我试图使用 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