2016-05-26 3 views
1

Я пытался создать образец демонстрационного приложения для Neo4j с помощью электрона и официального драйвера npm, установленного Neo4j, и мой код действительно очень простой, но я получаю сообщение об ошибке, когда пытаюсь открыть сессия. Этот код записывается в файл index.html в теге сценария:Официальный драйвер javascript Neo4j с электроном

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 

Кто-нибудь сталкивался с проблемой, как это?

ответ

1

Я создал приложение с использованием электрона и 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) 
      } 
      }) 

В-третьих, что вам нужно, чтобы позволить Neo4j внешние в вашем WebPack конфигурации:

externals: { 
    'neo4j': 'neo4j' 
    } 

Вы можете увидеть мой репозиторий здесь: https://github.com/ikwattro/electron-vue-test

Как я уже сказал, это очень мир привет, но работает.

0

Проблема заключается в том, что драйвер обнаруживает, что он запущен в браузере и пытается использовать канал 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

Смежные вопросы